Pagini recente » Cod sursa (job #1397239) | Cod sursa (job #244408) | Cod sursa (job #421724) | Cod sursa (job #1473589) | Cod sursa (job #2074739)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int p[30],m;
long long S;
void factorizare(int n)
{
int k=0;
int i;
int aux=n;
if(n%2==0)
{
p[1]=2;
k=1;
while(n%2==0)
n=n/2;
for(i=3; n>1; i+=2)
{
if(n%i==0)
p[++k]=i;
while(n%i==0)
n=n/i;
}
}
else
{
for(i=3; n>1; i+=2)
{
if(n%i==0)
{
p[++k]=i;
while(n%i==0)
n=n/i;
}
}
}
if(n!=1)
{
p[1]=n;
k=1;
}
m=k;
}
int cmmdc(int a,int b)
{
int r;
r=b%a;
while(r)
{
b=a;
a=r;
r=b%a;
}
return a;
}
int main()
{
FILE *f,*g;
f=fopen("fractii.in","r");
g=fopen("fractii.out","w");
int N;
int i;
fscanf(f,"%d",&N);
for(i=1; i<=N; i++)
{
factorizare(i);
int j,P=i,c=0;
for(j=1; j<=m; j++)
P=(P/p[j])*(p[j]-1);
S+=(N/i)*P;
for(j=1; j<=N%i; j++)
if(cmmdc(j,N)==1)
c++;
S+=c;
//printf("%lld",S);
//printf("\n");
//for(j=1;j<=m;j++)
//printf("%d ",p[j]);
//printf("\n");
}
fprintf(g,"%lld",S);
return 0;
}