Pagini recente » Cod sursa (job #976106) | Cod sursa (job #1382861) | Cod sursa (job #678576) | Cod sursa (job #569256) | Cod sursa (job #342667)
Cod sursa(job #342667)
#include <stdio.h>
#include <math.h>
long sp,p,q,a[100002],b[100002],i,k;
int main(){
FILE *f,*g;
f=fopen("gfact.in","r");
g=fopen("gfact.out","w");
fscanf(f,"%ld%ld",&p,&q);
for(i=1;i<=100000;i++){
a[i]=0;
b[i]=0;
}
k=0;
if(p%2==0){
a[++k]=2;
while(p%2==0){
b[k]++;
p/=2;
}
}
i=3;
double w=p;
w=sqrt(w);
do{
if(p%i==0){
a[++k]=i;
while(p%i==0){
b[k]++;
p/=i;
}
}
i+=2;
w=p;
w=sqrt(w);
}while(p!=1&&i<=w);
if(p!=1){
a[++k]=p;
b[k]=1;
}
for(i=1;i<=k;i++){
b[i]*=q;
}
long long nr=0;
i=1;
while(i<=b[k]){
nr+=a[k];
long long c=nr;
long x=0;
while (c%a[k]==0){
x++;
c/=a[k];
}
i+=x;
}
fprintf(g,"%lld\n",nr);
fclose(f);
fclose(g);
return 0;
}