Pagini recente » Cod sursa (job #2162047) | Cod sursa (job #1082827) | Cod sursa (job #888267) | Cod sursa (job #2070235) | Cod sursa (job #1636499)
#include <fstream>
#define INF 1500000000
#define NMAX 50
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
unsigned int v[NMAX] , nr[NMAX];
unsigned int p , q , n;
void desc(unsigned int x);
unsigned int verif(unsigned int x);
unsigned int caut_bin();
int main() {
f >> p >> q;
desc(p);
g << caut_bin();
return 0;
}
void desc(unsigned int x) {
unsigned int d = 2;
while(x != 1 && d < x) {
if(x % d == 0) {
v[++n] = d;
while(x % d == 0) {
++nr[n];
x /= d;
}
nr[n] *= q;
}
++d;
}
if(x != 1) {
v[++n] = x;
nr[n] = q;
}
}
unsigned int caut_bin() {
unsigned int i , p = 0;
for(i = 1 ; i <= INF ; i <<= 1);
while(i) {
if(verif(i + p) == 0) {
p += i;
}
i >>= 1;
}
return p + 1;
}
unsigned int verif(unsigned int x) {
for(int i = 1 ; i <= n ; ++i) {
unsigned int p = v[i] , aux = 0;
while(p <= x) {
aux += x / p;
p *= v[i];
}
if(aux < nr[i]) {
return 0;
}
}
return 1;
}