Pagini recente » Cod sursa (job #1043274) | Cod sursa (job #1817860) | Cod sursa (job #2908948) | Cod sursa (job #2202328) | Cod sursa (job #80249)
Cod sursa(job #80249)
#include<stdio.h>
#include<math.h>
long n, b, f, nr, ex, min, fmin;
int prim( long x)
{
if (x==1 || x==0) return 0;
if (x==2) return 1;
for (long i=3; i<=x/2; i++)
if (x%i==0) return 0;
return 1;
}
void descomp(long x)
{
long y=x; min=x;
if (y%2==0)
{
f=2;ex=0;
while (y%2==0) { y/=2; ex++;}
min=ex;
fmin=2;
}
for (long i=3; i<=y; i++)
{
if (y%i==0)
if (prim(i))
{
ex=0;
f=i;
while (y%i==0) { y/=i; ex++;}
if (min>=ex) {min=ex; fmin=f;}
}
}
}
long nrz(long x)
{
long long p=1, contor=0;
while (pow(fmin,p)<=x) contor+=(x/pow(fmin,p++));
return contor;
}
int main()
{
long i,z;
freopen("zero2.in","r",stdin);
freopen("zero2.out","w",stdout);
long nr, contor=0;
for (z=1; z<=10; z++)
{
scanf("%ld %ld",&n, &b);
descomp(b);
contor=0;
for (i=1; i<=n; i++) contor+=nrz(i);
printf("%ld\n",contor/min);
}
return 0;
}