Pagini recente » Cod sursa (job #1461601) | Cod sursa (job #3216895) | Cod sursa (job #427637) | Cod sursa (job #251771) | Cod sursa (job #517632)
Cod sursa(job #517632)
#include <fstream>
#include <bitset>
using namespace std;
#define dim 100001
bitset <dim> v;
int q[10000];
int main()
{
ifstream fin("sum.in");
ofstream fout("sum.out");
int n, nr, i, j,f;
fin>>n;
f=1;
q[0]=2;
for(i=4;i<=dim;i+=2)
v[i]=1;
for(i=3;i<dim;i+=2)
{
if(v[i]==0)
{
q[f]=i;
++f;
for(j=i+i+i;j<dim;j+=2*i)
v[j]=1;
}
}
for(i=1;i<=n;++i)
{
fin>>nr;
long long unsigned aux=nr*2;
long long unsigned s=aux*(aux+1)/2;
if(v[nr]==0)
s-=3*nr;
else
{
j=0;
while(nr>1)
{
if(nr%q[j]==0)
{
if(q[j]!=2)
{
s-=q[j];
for(int k=q[j]*q[j];k<=aux;k+=2*q[j])
s-=k;
}
else
for(int k=q[j];k<=aux;k+=2)
s-=k;
while(nr%q[j]==0)
nr/=q[j];
}
++j;
}
}
fout<<s<<'\n';
}
return 0;
}