Pagini recente » Cod sursa (job #1104246) | Rating Leonard Anderson (rondo) | Cod sursa (job #1176329) | Istoria paginii runda/antr4 | Cod sursa (job #65589)
Cod sursa(job #65589)
#include <fstream>
using namespace std;
int prime[1000002];
long n;
void citire() {
ifstream in("fractii.in");
in >> n;
}
void gen_prime() {
// 1 nu e prim
// 0 e prim
prime[1000000] = 1;
for (long d = 3; d < 1000000; d+=2) {
prime[d - 1] = 1;
if (prime[d] == 0)
for (long v= 2; v*d < 1000000; v++)
prime[d * v] = 1;
}
}
long long numar(long nr) {
if (prime[nr] == 0)
return nr - 1;
long long p = nr;
if (nr % 2 == 0)
p /= 2;
for (long d = 3; d <= nr / d; d +=2)
if (prime[d] == 0 && nr % d == 0)
p = p * (d - 1) / d;
return p;
}
long long suma() {
long long s = 0;
for (int i = 2; i <= n; i++)
s += numar(i);
return 1 + (s << 1);
}
int main() {
citire();
ofstream out("fractii.out");
gen_prime();
out << suma();
out.close();
return 0;
}