Pagini recente » Cod sursa (job #488909) | Cod sursa (job #883239) | Cod sursa (job #182415) | Cod sursa (job #1197260) | Cod sursa (job #2073051)
#include <fstream>
using namespace std;
int P, D[13], K;
long long rez, N, q;
void gen(long long a, long long b, long long semn){
if (a==K){
rez+=q/b*semn;
return;
}
gen(a+1, b*D[a], (-1)*semn);
gen(a+1, b, semn);
}
void fact(){
long long d, x;
x=N;
for (d=2; d<=x; d++)
if (x%d==0){
D[K++]=d;
while (x%d==0)
x/=d;
}
}
long long nrPrimePanaLa(long long k){
rez=0; q=k;
gen(0, 1, 1);
return rez;
}
int main(){
long long i, j, m, r;
ifstream fin ("frac.in");
fin >> N >> P;
fin.close();
fact();
i=0; j=1000000000000000000;
while (i<=j){
m=(i+j)/2;
r=nrPrimePanaLa(m);
if (r>=P)
j=m-1;
else
i=m+1;
}
ofstream fout ("frac.out");
fout << j+1;
fout.close();
return 0;
}