Pagini recente » Cod sursa (job #1726329) | Cod sursa (job #1553941) | Cod sursa (job #432981) | Cod sursa (job #90667) | Cod sursa (job #93539)
Cod sursa(job #93539)
#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;
}