Cod sursa(job #1392677)
Utilizator | Data | 18 martie 2015 20:14:07 | |
---|---|---|---|
Problema | GFact | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.66 kb |
#include<cstdio>
#include<math.h>
int main()
{
FILE *fin,*fout;
fin=fopen("gfact.in","r");
fout=fopen("gfact.out","w");
int p,q,m,div,past,keep;
fscanf(fin,"%d %d",&p,&q);
if(p%2==0)
{
m=2;
while(p%2==0)
{
p/=2;
}
}
for(int i=3;i<=p;i+=2)
{
if(p%i==0)
{
m=i;
while(p%i==0)
{
p/=i;
}
}
}
q*=2;
keep=sqrt(q);
for(int i=keep;;i++)
{
if(i*(i+1)>=q)
{
fprintf(fout,"%d",i*m);
break;
}
}
}