Pagini recente » Cod sursa (job #2473116) | Cod sursa (job #2074726)
#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;
if(n%2==0)
{p[1]=2;
k=1;
while(n%2==0)
n=n/2;
for(i=3;i<=sqrt(n);i+=2)
{
if(n%i==0)
p[++k]=i;
while(n%i==0)
n=n/i;
}
}
else
{
for(i=3;i<=sqrt(n);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 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);
long long c;
c=1ll<<m;
//printf("%d ",m);
int j,M=0;
long long y=0;
while(y<c)
{ int t=0;
int P=1;
for(j=1;j<=m;j++)
if(y&(1<<(j-1)))
{
P*=p[j];
t++;
}
if(t%2==0)
M+=N/P;
else
M-=N/P;
printf("%d %lld %d %d\n",i,y,P,t);
y=y+1;
}
S+=M;
//printf("%lld",S);
//printf("\n");
//for(j=1;j<=m;j++)
//printf("%d ",p[j]);
//printf("\n");
}
fprintf(g,"%lld",S);
return 0;
}