Pagini recente » Cod sursa (job #2167131) | Cod sursa (job #1392803) | Cod sursa (job #788929) | Cod sursa (job #2101811) | Cod sursa (job #1804230)
#include <stdio.h>
#include <stdlib.h>
int prim[10], ex[10], nr;
void facprim(int n){
int div=2, e;
while(div*div<=n){
if(n%div==0){
prim[nr]=div;
e=0;
while(n%div==0){
n/=div;
e++;
}
ex[nr]=e;
nr++;
}
div++;
}
if(n!=1){
prim[nr]=n;
ex[nr]=1;
nr++;
}
}
int baga(int n, int div){
int s=0, divc=div;
while(div<=n && div!=0){
s+=n/div;
div*=divc;
}
return s;
}
int da(int n){
int i, da=1;
for(i=0;i<nr;i++)
if(baga(n, prim[i])<ex[i])
da=0;
return da;
}
int calc(){
int poz, pas;
poz=1;
pas=1<<30;
while(pas!=0){
if(da(poz+pas)==0)
poz+=pas;
pas/=2;
}
poz++;
return poz;
}
int main(){
FILE *fin, *fout;
int p, q, i;
fin=fopen("gfact.in", "r");
fout=fopen("gfact.out", "w");
fscanf(fin, "%d%d", &p, &q);
nr=0;
facprim(p);
for(i=0;i<nr;i++)
ex[i]*=q;
fprintf(fout, "%d", calc());
fclose(fin);
fclose(fout);
return 0;
}