Pagini recente » Cod sursa (job #2970753) | Cod sursa (job #526453)
Cod sursa(job #526453)
#include<iostream>
#include<fstream>
using namespace std;
int p,q,d[30],pu[30],nr;
void fact(int a);
bool div(int a);
ifstream aa("gfact.in");
ofstream ss("gfact.out");
int main() {
int i,pas;
aa >> p >> q;
fact(p);
pas=1<<30;
for (i=0;pas!=0;pas>>=1) {
if (!div(i+pas)) i+=pas;
}
ss << i+1;
return 0;
}
bool div(int a) {
int nr2,i,s;
for (i=1;i<=nr;++i) {
nr2=0; s=a;
while (s>0) {
nr2+=s/d[i];
s/=d[i];
if (nr2>=pu[i]) break;
}
if (!(nr2>=pu[i])) return false;
}
return true;
}
void fact(int a) {
int i;
for (i=2;i*i<=a;++i) {
if (a%i==0) {
d[++nr]=i;
pu[nr]=0;
while (a%i==0) {
a/=i;
pu[nr]+=q;
}
}
}
if (a!=1) {
d[++nr]=a;
pu[nr]=q;
}
}