Cod sursa(job #124802)

Utilizator catalaurCatalin catalaur Data 19 ianuarie 2008 21:49:55
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
// 
// File:   newmain.cc
// Author: catalaur
//
// Created on January 19, 2008, 1:20 AM
//

#include <stdio.h>
#include <iostream.h>

int p[1000000];  

int cmmdc(long n){
    long i, j, nr = 1;  
    for (i = 2; i <= n; ++i) {  
     if (p[i] == 0) {  
       nr++;  
       for (j = i + i; j <= n; j += i) {  
         p[j] = 1;  
       }  
     }
    }
}
int relcmmd(long a,long b){
    if (p[a]==0 and p[b]==0) return 1;
    else{
        if (a==1 or b==1){
            return 1;
        }else{
            if (a%b==0 or b%a==0){
                return 0;
            }else{
                do{
                    if (a>b) a=a-b;
                    if (b>a) b=b-a;
                }while(a!=b);
                if (a == 1){
                    return 1;
                }else{
                    return 0;
                }
            }
        }
    }
}

int main() {
    FILE *fi,*fo;
    long n,i,j;
    long long frac;
    fi = fopen("fractii.in" , "r");
    fscanf(fi , "%d" , &n);
    fclose(fi);
    frac=1;
    cmmdc(n);
    for (i=1; i<=n; i++){
        for (j=1; j<=n; j++){
            if (i!=j){
                if (relcmmd(i,j) == 1) frac++;
            }
        }
    }
    fo = fopen("fractii.out" , "w");
    fprintf(fo , "%1d" , frac);
    return 0;
}