Pagini recente » Cod sursa (job #2057157) | Cod sursa (job #184516) | Cod sursa (job #3153338) | Cod sursa (job #2701344) | Cod sursa (job #2068144)
#include <iostream>
using namespace std;
int d[200], e[200];
long long nd, q;
long long putere(long long n, int d)
{
long long s = 0;
while(n >= d) s += (n /= d);
return s;
}
bool sepoate(long long n)
{
for(int i = 1 ; i <= nd ; i++){
if(putere(n, d[i]) < e[i] * q) return false;
}
return true;
}
int main()
{
int p, n, i;
cin >> p >> q;
n = p;
i = 2;
while(i * i <= n){
if(n % i == 0){
d[++nd] = i;
while(n % i == 0){
n /= i;
e[nd]++;
}
}
i++;
}
if(n != 1){
d[++nd] = n;
e[nd] = 1;
}
long long r = 0, pas = 1LL << 60;
while(pas != 0){
if(!sepoate(r + pas)) r += pas;
pas /= 2;
}
cout << r + 1;
return 0;
}