Cod sursa(job #93539)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 19 octombrie 2007 00:49:36
Problema Frac Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<string.h>
long  a[1000],b[1000],N,nr,M;
void divizori(long long x,long a[1000]){
if (x%2==0)
   a[2]=1;
while (x%2==0)
    x/=2;
for (long long i=3;i<=x/i;i+=2){
    while (x%i==0) {
	 a[i]=1;
	 x/=i;}}
if (x!=1)
   a[x]=1;
}
int comparare (long long x){
if (x%2==0){
if (a[2]==1)
   return 0;
while (x%2==0)
    x/=2;}
for (long long d=3;d<=x/d;d+=2)
    if (x%d==0)  {
       if (a[d]==1)
	  return 0;
       while (x%d==0)
	   x/=d;  }
if (x!=1)
  if (a[x]==1)
     return 0;
return 1;
}
long long numar (){
divizori(N,a);
for (int long i=1;M>0;i++){
    if (comparare(i))
       M--;
    }
return i;
}
int main(){
freopen("frac.in","r",stdin);
freopen ("frac.out","w",stdout);
scanf ("%ld",&N);
scanf ("%ld",&M);
long long f=numar()-1;
printf ("%ld",f);
fclose(stdin);
fclose(stdout);
return 0;
}