Pagini recente » Cod sursa (job #399385) | Cod sursa (job #1453738) | Cod sursa (job #325450) | Cod sursa (job #81075) | Cod sursa (job #953142)
Cod sursa(job #953142)
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
ifstream f("sum.in");
ofstream g("sum.out");
void erst(vector<long long>&);
void fctrz(vector<long long>&,vector<long long>&);
int main()
{
int t;
vector<long long> p,phi(2,0);
f>>t;
erst(p);
fctrz(phi,p);
while(t--){
long long n;
f>>n;
long long s=2*phi[n]*n;
g<<s<<'\n';
}
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++){
int fi=1,ax=i;
for(size_t j=0;j<p.size()&&ax!=1;j++){
int nr=0;
while(ax%p[j]==0){
nr++;
ax/=p[j];
}
if(nr)
fi*=(p[j]-1)*pow(double(p[j]),nr-1);
}
if(fi==1)
fi=i-1;
phi.push_back(fi);
}
}