Pagini recente » Cod sursa (job #363687) | Cod sursa (job #2879109) | Cod sursa (job #286163) | Cod sursa (job #2245626) | Cod sursa (job #1905795)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int pute[30],nd;
long int divi[30],Q,k;
long long putere(long n,int k){
long long nr=0;
while(n!=0){
nr+=n/k;
n/=k;
}
return nr;
}
bool verde(long long n){
for(int i=0;i<nd;i++){
k=divi[i];
if(putere(n,k)<Q*pute[i]){
return false;
}
}
return true;
}
int main()
{
long long p,pas,n=0;
long int q;
int i;
fin>>p>>q;
Q=q;
cout<<Q;
for(i=2;i*i<=p;i++){
if (p%i == 0) {
divi[nd]=i;
while(p%i==0){
p=p/i;
pute[nd]++;
}
nd++;
}
}
if (p != 1) {
divi[nd] = p;
pute[nd++] = 1;
}
pas = (1LL << 60);
while(pas!=0){
if(!verde(n+pas)){
n+=pas;
}
pas/=2;
}
fout<<n+1;
return 0;
}