Pagini recente » Cod sursa (job #2099826) | Cod sursa (job #955521) | Cod sursa (job #939410) | Cod sursa (job #1893286) | Cod sursa (job #1380542)
#include<stdio.h>
int cmmdc(int a, int b)
{
if (a == 0)
return b;
while (b > 0)
if (a > b)
a = a - b;
else
b = b - a;
return a;
}
int main(){
int i,j,M, trys;
FILE *in,*out;
in = fopen("fractii.in","r");
out = fopen("fractii.out","w+");
if(!fscanf(in, "%d\n", &M)) return 1;
int count = -1;//i=1,j=1
int phi[M];
//for (int i = 1; i <= M; ++i)
// phi[i] = i-1;
//for (int i = 2; i <= M; ++i)
// for (int j = 2*i; j <= M; j += i)
// phi[j] -= phi[i];
for (i=1;i<=M;i++) phi[i]=i;
for (i=2;i<=M;i++)
if (phi[i]==i)
for (j=i;j<=M;j+=i) phi[j] /=i, phi[j] *= (i-1);
for (i=1;i<=M;i++){
trys = phi[i];
for (j=1;j<=i && trys>0;j++)
if (i==1 || j==1)
count+=2;
else
if (cmmdc(i,j)==1){
count+=2;
trys--;
//printf("%d %d\n",i,j);
}
}
fprintf(out,"%d",count);
fclose(in);
fclose(out);
printf("%d", count);
getchar();
return 0;
}