Pagini recente » Cod sursa (job #833231) | Cod sursa (job #2644359) | Cod sursa (job #1659790) | Cod sursa (job #1414375) | Cod sursa (job #953147)
Cod sursa(job #953147)
#include <cstdio>
#include <vector>
using namespace std;
FILE *f=fopen("sum.in","r");
FILE *g=fopen("sum.out","w");
void erst(vector<long long>&);
void fctrz(vector<long long>&,vector<long long>&);
int main()
{
int t;
vector<long long> p,phi(2,0);
fscanf(f,"%lld",&t);
phi[1]=1;
erst(p);
fctrz(phi,p);
while(t--){
long long n;
fscanf(f,"%lld\n",&n);
long long s=2*phi[n]*n;
fprintf(g,"%lld\n",s);
}
return 0;
}
void erst(vector<long long>& v)
{
vector<bool> ok(500,0);
for(int i=2;i<500;i++){
if(!ok[i]){
v.push_back(i);
for(int j=2;j*i<500;j++)
ok[i*j]=1;
}
}
}
void fctrz(vector<long long>& phi,vector<long long>& p)
{
for(int i=2;i<100001;i++){
size_t j;
for(j=p.size();j>0;j--){
if(i%p[j-1]==0)
break;
}
if(j==0||i==p[j-1])
phi.push_back(i-1);
else{
if((i/p[j-1])%p[j-1]==0)
phi.push_back(phi[i/p[j-1]]*p[j-1]);
else
phi.push_back(phi[i/p[j-1]]*(p[j-1]-1));
}
}
}