Pagini recente » Cod sursa (job #30331) | Cod sursa (job #392854) | Cod sursa (job #1143774) | Cod sursa (job #2839956) | Cod sursa (job #232471)
Cod sursa(job #232471)
// pb003.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#define MAX 1000001
bool prime[MAX] = { 0 };
void GenPrime()
{
long i, j;
//for (i = 1; i <= MAX; i++) prime[i] = 0;
for (i = 3; i <= MAX; i += 2) if (!prime[i])
{
for (j = i * 2; j <= MAX; j += i) prime[j] = true;
}
}
long long fi(long n)
{
long long result = 0;
long d = 2, p = 0;
if (n == 1) return 1;
if ((!prime[n]) &&(n % 2)) return n - 1;
while (n % d) d++;
while (n % d == 0)
{
n /= d; p++;
}
result += (long long)pow((double)d, (double)(p - 1)) * (d - 1) * fi(n);
return result;
}
int main()
{
FILE *fin = fopen("fractii.in", "rt");
if (!fin) return 0;
long n = 0, i;
fscanf(fin, "%ld", &n);
fclose(fin);
GenPrime();
long long r = 1;
for (i = 2; i <=n; i++) r += (fi(i) * 2);
FILE *fout = fopen("fractii.out", "wt");
if (!fout) return 0;
fprintf(fout, "%lld", r);
fclose(fout);
return 0;
}