Pagini recente » Cod sursa (job #1785499) | Cod sursa (job #1113130) | Cod sursa (job #1424434) | Cod sursa (job #1059106) | Cod sursa (job #65597)
Cod sursa(job #65597)
#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 numar(long nr) {
//if (prime[nr] == 0)
// return nr - 1;
long p = nr;
if (nr % 2 == 0)
p /= 2;
while (nr % 2 == 0)
nr >>= 1;
for (long d = 3; d <= nr / d; d +=2) {
if (nr % d == 0 )
p = p * (d - 1) / d;
while (nr % d == 0) nr /=d ;
}
if (nr > 1)
p = p * (nr - 1) / nr;
return p;
}
long suma() {
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;
}