Pagini recente » Cod sursa (job #2878914) | Cod sursa (job #953760) | Cod sursa (job #961727) | Cod sursa (job #1601338) | Cod sursa (job #23971)
Cod sursa(job #23971)
#include<stdio.h>
#include<math.h>
#include<string.h>
#define MAXSIZE 1000001
int n;
int citire()
{
FILE *f=fopen("fractii.in","r");
fscanf(f,"%d",&n);
fclose(f);
return 1;
}
int p[MAXSIZE], p2[MAXSIZE];
int numar(int q) {
int i, j, nr = 0;
memset(p,0,n*8);
// for(i=2; i<=n; i++) p[i]=0;
for(i=2; i<=n; i++)
{
if(p[i]==0)
{
if(q%i==0||i%q==0)
for(j=i; j<=n; j+=i) p[j]=1;
else nr++;
}
}
return nr;
}
int main(void)
{
int k,o,t,i,j,nr=0;
FILE *f;
citire();
nr=2*n-1;
for(i=2;i<=n;i++)
if(p2[i]==0)
{
t=numar(i);
printf("\n%d : %d",i,t);
for(j=i;j<=n;j+=i)
{
k=j/i;
if(!p2[k]){
p2[j]=t;
}
else
{ o=p2[i]-p2[k]; if(o<0) o=o*(-1);
if(o==0) p2[j]=t;
else p2[j]=o;
}
}
}
for(i=2;i<=n;i++) nr+=p2[i];
f=fopen("fractii.out","w");
fprintf(f,"%d\n",nr);
fclose(f);
return 0;
}