Cod sursa(job #1339)

Utilizator undogSavu Victor Gabriel undog Data 13 decembrie 2006 13:10:39
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>

int ggt(long m, long n){

if(m%2==0&&n%2==0)
return 2;

if(n>m){
long aux=m;
m=n;
n=aux;
}

long r;

while(m%n!=0){
r=m%n;
m=n;
n=r;
}
if(n==1) return 1;
return 2;
}

int prim(long n){

long r, i;

for(i=3;i<n/2;i=i+2){
 if(n%i==0)
 return 0;
}
return 1;
}




int main()
{
FILE *in,*out;
long n,p,q,i=0;
in=fopen("fractii.in","rt");
out=fopen("fractii.out","w+");
fscanf(in,"%ld",&n);
i=2*n-1;
for(p=2;p<=n;p++){
 if(p%2==1){
  if(prim(n))
   i=i+p-1;
  else{
   for(q=2;q<=n;q++){
    if(ggt(p,q)==1)
     i=i+1;
  }
 }
}
 else{
  for(q=3;q<=n;q=q+2){
   if(ggt(p,q)==1)
    i=i+1;
  }
 }
}

fprintf(out,"%ld",i);

}