阶乘因式分解(一)

来源:互联网 发布:php网站源码怎么修改 编辑:程序博客网 时间:2024/06/13 22:33

阶乘因式分解(一)

描述
给定两个数m,n,其中m是一个素数。
将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。

输入
第一行是一个整数s(0 < s <= 100),表示测试数据的组数
随后的s行, 每行有两个整数n,m。

输出
输出m的个数。

样例输入
2
100 5
16 2

样例输出
24
15

代码示例

#include<stdio.h>#include<math.h>int sushu(int n){    int i;    if(n==1) return 2;    if(n==2) return 1;    for(i=2;i<=sqrt(n);i++){        if(n%i==0) {            return 0;}    }    return 1;}int jiecheng(int n){    int i,s=1;    for(i=1;i<=n;i++){        s*=i;    }    return s;}int main(){    int n,m,k=0,i;    int j,j_t,s;    int a,b;    int yinzi[10000];    scanf("%d",&s);    for(a=1;a<=s;a++){            b=0;        scanf("%d %d",&n,&m);        for(i=0;i<10000;i++){            yinzi[i]=0;        }        for(j=1;j<=n;j++){            if(sushu(j)==2){                k=1;                yinzi[0]=1;            }            else if(sushu(j)==1){                k=2;                yinzi[0]=1;                yinzi[1]=j;            }            else if(sushu(j)==0){//n不是素数的情况下才可以分解                k=0,i=2,j_t=j;                while(j_t!=1){                    if(j_t%i==0){                        yinzi[k]=i;                        j_t=j_t/i;                        k++;                        i=2;                        continue;                    }                    i++;                }            }           for(i=0;i<k;i++){               if(m==yinzi[i]) b++;            }        }        printf("%d\n",b);    }return 0;}