Pagini recente » Cod sursa (job #1200512) | Cod sursa (job #1359545) | Cod sursa (job #2287488) | Cod sursa (job #1549068) | Cod sursa (job #1058744)
#include <fstream>
using namespace std;
ifstream f("sum.in");
ofstream g("sum.out");
const int N=200001;
int e[N],c[N/2+1];
int prim[N/2+1];
bool r[N/2+1];
int main(){
int n,nr=0,i,j,k,x,nrp=0,maxi=0;
long long s;
f>>x;
for(k=1;k<=x;k++){
f>>c[k];
if(c[k]>maxi)
maxi=c[k];
}
for(i=2 ; i*i<=maxi; i++)
if(!r[i])
for(j=i*i ; j<=maxi; j+=i)
r[j] = true;
for(i=2;i<=maxi;i++)
if(r[i]==false){
nrp++;
prim[nrp]=i;
}
for(k=1;k<=x;k++){
s=0;
nr=0;
n=c[k];
if(r[n]==false)
for(i=1;i<2*n;i++){
if(i!=n)
s=s+i;
}
else{
for(i=1;i<=2*n;i++)
e[i]=i;
for(i=1; i<=nrp ;i++)
if(n%prim[i]==0)
for(j=prim[i];j<=2*n;j+=prim[i])
e[j]=e[j]/prim[i]*(prim[i]-1);
for(i=1;i<2*n;i++)
if(e[i]==i)
s=s+i;
}
g<<s<<"\n";
}
return 0;
}