Cod sursa(job #1676887)

Utilizator Valentin0709Datcu George Valentin Valentin0709 Data 6 aprilie 2016 11:05:53
Problema Frac Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
#include<math.h>
using namespace std;

FILE*f=fopen("frac.in","r");
FILE*g=fopen("frac.out","w");

long long div[5000],cn,x,n,p,i,j,ok,dim,nrp,nr,p1,p2;

int prim(long long x) {
    int r;
    r=x%cn;
    while(r) {
    x=cn;
    cn=r;
    r=x%cn;
    }
    if(cn==1) return 1;
    else return 0;
}

int main() {

    fscanf(f,"%lld%lld",&n,&p);

    p2=1; p1=1; cn=n;
    for(i=2;i<=sqrt(n)&&n!=1;i++) {
        ok=0;
        while(n%i==0) {n=n/i; ok=1;}
        if(ok==1) { p1=p1*i; p2=p2*(i-1);}
    }
    if(n!=1) { p1=p1*n; p2=p2*(n-1);}

    x=(p-1)*p1/p2;
    while(x%p1!=0) x--;
    while(prim(x)==0) x++;

    fprintf(g,"%lld",x);


    return 0;
}