Pagini recente » Cod sursa (job #510862) | Cod sursa (job #2132183) | Cod sursa (job #2303174) | Cod sursa (job #2577488) | Cod sursa (job #161908)
Cod sursa(job #161908)
#include <stdio.h>
#include <math.h>
#define N 2000000
int v[N];
void descompune(int p)
{
int x=p;
for(int i=2;i<=x;++i)
{
if(p<=1) break;
while(!(p%i))
{
++v[i];
p/=i;
}
}
}
void ridica_la_putere(int p, int q)
{
int i;
for(i=2;i<=p;++i)
if(v[i]!=0)
v[i]*=q;
}
long long solve(int p, int q)
{
int k,i,j=0;
long long max=0;
for(i=2;i<=p;++i)
{
if(v[i]>0)
for(j=i;j<=p*q;j+=i)
{
k=j;
while(!(k%i))
{
--v[i];
k/=i;
}
if(v[i]<=0)
break;
}
if(j>max) max=j;
}
return max;
}
int main()
{
int p,q;
long long rez;
freopen("gfact.in", "r",stdin);
freopen("gfact.out", "w",stdout);
scanf("%d %d", &p, &q);
descompune(p);
ridica_la_putere(p,q);
/*for(int i=2;i<=p;++i)
if(v[i]!=0)
printf("%d %d\n", v[i],i);
printf("\n");*/
rez=solve(p,q);
printf("%lld\n", rez);
return 0;
}