阶乘因式分解
Description
给定两个数n,m,其中m是一个素数。 将n(0<=n<=2^31)的阶乘分解质因数,求其中有多少个m。 注:^为求幂符号。
Input
第一行是一个整数s(0<S<=100),表示测试数据的组数 p="" <="" 每行有两个整数n,m。="" 随后的s行,=""></S<=100),表示测试数据的组数>
Output
输出m的个数
Sample Input
3
100 5
16 2
1000000000 13
Sample Output
24
15
83333329
#include<stdio.h>
int main() {
int i,j,k,n,a,count,x,h;
scanf("%d",&x);
int b[x];
for(h=0;h<x;h++){
count=0;
scanf("%d%d",&n,&k);
for(i=1; i<=n; i++) {
a=i;
for(j=2; j<=i; ) {
while(a%j==0) {
a=a/j;
if(j==k) count++;
}
if(a%j!=0) j++;
if(a==1) break;
}
}
b[h]=count;
}
for(h=0;h<x;h++){
printf("%d\n",b[h]);
}
return 0;
}