Pagini recente » Cod sursa (job #859533) | Cod sursa (job #1094264) | Cod sursa (job #129209) | Cod sursa (job #614047) | Cod sursa (job #13560)
Cod sursa(job #13560)
#include "stdio.h"
#include "math.h"
unsigned int cmmdc(unsigned int a, unsigned int b)
{
while(a%b)
{
unsigned int aux = b;
b = a%b;
a = aux;
}
return b;
}
bool IsPrime(unsigned int n)
{
if(n==1 || n==2)
return true;
for(int k=3; k<=sqrt((double)n); k+=2)
if(n%k==0)
return false;
return true;
}
int main(void)
{
FILE *fin, *fout;
unsigned int N, i, j, t;
bool Eratostene[1000000];
unsigned __int64 n;
if((fin = fopen("fractii.in", "r"))==NULL)
return -1;
if((fout = fopen("fractii.out", "w"))==NULL)
return -1;
fscanf(fin, "%d", &N);
n=N;
for(t=1; t<=N; t++)
Eratostene[t] = true;
for(t=2; t*t<=N; t++)
{
if(Eratostene[t])
{
i=2;
while(i*t <= N)
{
Eratostene[i*t] = false;
i++;
}
}
}
for(i=2; i<=N; i++)
{
n++;
for(j=2; j<=N; j++)
{
if(Eratostene[i] && Eratostene[j] && i!=j)
n++;
else if(cmmdc(i, j)==1)
n++;
}
}
fprintf(fout, "%d", n);
fclose(fin);
fclose(fout);
return 0;
}