阶乘因式分解(一)
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
给定两个数m,n,其中m是一个素数。
将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。
-
输入
-
第一行是一个整数s(0<s<=100),表示测试数据的组数
随后的s行, 每行有两个整数n,m。
输出
- 输出m的个数。 样例输入
-
2 100 5 16 2
样例输出
-
24 15
-
第一行是一个整数s(0<s<=100),表示测试数据的组数
要看清题意:注意是n的阶乘不是n,而且n的阶乘数值比较大,所以不能直接算出n的阶乘再计算结果
c代码如下
#include<stdio.h>
int main()
{
int t,m,n,k,j,i,sum,h;
int a[10000];
scanf("%d",&t);
while(t--)
{
sum=0; //每次都要从0开始计数
j=0;h=0;
scanf("%d%d",&n,&m);
k=n/m;
for(i=n;i>=m;i-=m) //每m个数里面有一个能整除m的数
{
sum++;
j=sum;
while(j%m==0) //如果出现m的二次方或三次方等等的时候要再加上
{
j=j/m;
h++;
}
}
sum=sum+h;
printf("%d\n",sum);
}
return 0;
}