Pagini recente » Cod sursa (job #1030606) | Cod sursa (job #618174) | Cod sursa (job #367403) | Cod sursa (job #3128765) | Cod sursa (job #390434)
Cod sursa(job #390434)
#include <stdio.h>
#include <string.h>
#define MAX 500000
long long tot(int i, char* CIUR)
{
if (CIUR[i] == 0)
return i-1;
long long nr = i;
for (int k = 2; k <= i/2; k++)
{
if (CIUR[k] == 0 && i % k == 0)
{
nr /= k;
nr *= k-1;
}
}
return nr;
}
int main()
{
FILE* fin = fopen("fractii.in", "r");
FILE* fout = fopen("fractii.out", "w");
int N;
fscanf(fin, "%d", &N);
char CIUR[MAX];
memset(CIUR, 0, (N+1)*sizeof(char));
int limi = N+1;
for (int i = 2; i <= limi; i++)
{
if (CIUR[i] == 0)
{
int limj = limi / i + 1;
for (int j = 2; j < limj; j++)
{
CIUR[i*j] = 1;
}
}
}
long long nr = 1;
for (int i = 2; i <= N; i++)
{
nr += 2*tot(i, CIUR);
}
fprintf(fout, "%lld", nr);
fclose(fin);
fclose(fout);
return 0;
}