Pagini recente » Cod sursa (job #2003713) | Cod sursa (job #647525) | Cod sursa (job #1936617) | Cod sursa (job #1796914) | Cod sursa (job #93540)
Cod sursa(job #93540)
#include<stdio.h>
#include<string.h>
long a[1000000],N,nr,M;
void divizori(long x,long a[1000000]){
if (x%2==0)
a[2]=1;
while (x%2==0)
x/=2;
for (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 x){
if (x%2==0){
if (a[2]==1)
return 0;
while (x%2==0)
x/=2;}
for (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 numar (){
divizori(N,a);
long i;
for (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 f=numar()-1;
printf ("%ld",f);
fclose(stdin);
fclose(stdout);
return 0;
}