Pagini recente » Cod sursa (job #2428308) | Cod sursa (job #1891191) | Cod sursa (job #3327221) | Cod sursa (job #3355218) | Cod sursa (job #3305121)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin ("indep.in");
ofstream fout ("indep.out");
bool IsPrime [1002];
vector <int> primes;
int pr[1002];
int v[505];
int nrdiv[1002];
void Ciur(){
IsPrime[0] = 0;
IsPrime[1] = 0;
pr[1] = 1;
for (int i=2;i<=1000;++i){
IsPrime[i] = 1;
pr[i] = 1;
}
for (int i=2;i<=1000;++i){
if (IsPrime[i]==1){
pr[i] *= i;
for (int j=2*i;j<=1000;j+=i){
IsPrime[j] = 0;
pr[j] *= i;
}
}
}
for (int i=2;i<=1000;++i){
if (IsPrime[i]==1) primes.push_back(i);
}
}
signed main()
{
Ciur();
int n;
fin >> n;
for (int i=1;i<=n;++i){
fin >> v[i];
for (int j=1;j<=v[i];++j){
if (v[i]%j==0){
nrdiv[j]++;
}
}
}
int ans = 0;
for (int i=1;i<=1000;++i){
if (i!=pr[i]) continue;
int nr = 0;
int I = i;
for (auto x:primes){
if (I%x==0){
nr++;
}
while(I%x==0){
I /= x;
}
}
if (I>1) nr++;
int semn = 1;
if (nr%2==1) semn = -1;
if (nrdiv[i]==0) continue;
ans += (1LL<<nrdiv[i])*semn;
}
fout << ans;
return 0;
}