Cod sursa(job #13560)

Utilizator airineivAirinei Vasile airineiv Data 7 februarie 2007 00:00:41
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#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;
}