Pagini recente » Cod sursa (job #633152) | Cod sursa (job #1548131) | Cod sursa (job #3038866) | Cod sursa (job #1555422) | Cod sursa (job #756770)
Cod sursa(job #756770)
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream f("sum.in");
ofstream g("sum.out");
int n=0, i, j, t, phi[200005], x[100005];
//long long s;
;
f>>t;
for(i=1; i<=t; i++) {
f>>x[i];
if(x[i]>n) n=x[i]; //n = max(x[i])
}
n*=2; //n = 2*max(x[i]) -> pana unde calculez functia phi()
for(i=1; i<=n; i++) phi[i] = i; //indicatorul lui euler (phi[i] = nr de numere prime cu i, mai mici decat i)
for(i=2; i<=n; i++) { //initializez cu i, si din toti multiplii lui i scad phi[i]
if(phi[i]==i) //optimizare: ma duc doar pe multipli de numere prime
for(j=i; j<=n; j+=i) { //aka il calculez folosind ciurul
phi[j] /= i;
phi[j] *= (i-1);
}
}
for(i=1; i<=t; i++) {
g<<1LL*phi[x[i]]*2*x[i]<<"\n"; //ceva formula dedusa
}
f.close();
g.close();
return 0;
}