Pagini recente » Cod sursa (job #2332722) | Cod sursa (job #1829800) | Cod sursa (job #34542) | Cod sursa (job #2703207) | Cod sursa (job #1466767)
#include <stdio.h>
#include <iostream>
#include <list>
#define FIN "sum.in"
#define FOUT "sum.out"
#define N_MAX 100000
int N, X;
FILE *in, *out;
int seave[2 * N_MAX];
int solve(){
for(int i=0; i < 2 * X; i++){
seave[i] = i;
}
int to_f = X;
std::list<int> divizors;
for(int d = 2; to_f > 1; d++){
if(to_f % d == 0) divizors.push_back(d);
while(to_f % d == 0) to_f /= d;
}
for(int d : divizors){
for(int i = 1; d * i <= 2 * X; i++){
seave[d*i] = 0;
}
}
int sum = 0;
for(int i = 1; i < 2 * X; i++){
sum += seave[i];
}
return sum;
}
int main(){
in = fopen(FIN, "rt");
out = fopen(FOUT, "wt");
if(!in || !out) return 1;
fscanf(in, "%d", &N);
int sum;
for(int i=0; i < N; i++){
sum = 0;
fscanf(in, "%d", &X);
sum = solve();
fprintf(out, "%d\n", sum);
}
//std::cin >> X;
fclose(in);
fclose(out);
return 0;
}