Pagini recente » Cod sursa (job #3131491) | Cod sursa (job #1994444) | Cod sursa (job #2592079) | Cod sursa (job #2265040) | Cod sursa (job #161891)
Cod sursa(job #161891)
#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 max=0,k,i,j;
for(i=2;i<=p;++i)
{
if(v[i]!=0)
for(j=2;j<=p*q;j+=i)
{
k=j;
while(!(k%i))
{
--v[i];
k/=i;
}
//printf("%d ", j);
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<=10;++i)
printf("%d ", v[i]);
printf("\n");*/
//q=1;
//for(int i=2;i<=10;++i)
// q*=pow(i,v[i]);
//printf("%d", q);
rez=solve(p,q);
printf("%lld\n", rez);
return 0;
}