Pagini recente » Istoria paginii utilizator/lupascumia | Cod sursa (job #2681043) | Monitorul de evaluare | Istoria paginii utilizator/tudor_bustan | Cod sursa (job #66730)
Cod sursa(job #66730)
#include<fstream.h>
long int a[2000000],b[2000000],P,Q;
void factor(long int P,long int a[2000000]){
while (P%2==0){
a[2]++;
P/=2;}
for (long d=3;d<=P/d;d+=2)
while (P%d==0){
a[d]++;
P/=d;}
if (P!=1)
a[P]++;
}
int comparare(long N){
for (long i=0;i<=N;i++)
if (a[i]!=0&&b[i]%a[i]!=0)
return 0;
else
if (b[i]==0&&a[i]>0)
return 0;
return 1;
}
void imn(long P){
for (long i=0;i<=P;i++)
a[i]*=Q;
}
int main(){
ifstream fin("gfact.in");
fin>>P>>Q;
fin.close();
factor(P,a);
imn(P);
ofstream fout("gfact.out");
for (long i=2;i<3100000;i++){
factor(i,b);
if (comparare(P)==1) {
fout<<i;
break; } }
fout<<"\n";
fout.close();
return 0;
}