首页 > 代码库 > 因子和阶乘

因子和阶乘

题意太多我就不写了

来说思路吧:刚看完这道题我有点蒙 不知道从何入手  后来看了大牛的博客才写出来这些,首先我们得先求出所有素数,然后用每个素数除就可以了,然后用p[i]来存个数

下面看代码吧:

#include<stdio.h>#include<string.h>int is_prime(int n){    for(int i = 2;i*i <= n;i++)    {        if(n%i==0) return 0;    }    return 1;}//素数表int prime[100],count = 0;int main(){    //n和各个数的指数    int p[100],n;    for(int i = 2;i <= 100;i++)    {        if(is_prime(i))prime[count++] = i;    }    while(scanf("%d",&n))    {        printf("%d != ",n);        memset(p,0,sizeof(p));        int maxp = 0;        for(int i = 1;i <= n;i++)        {            int m = i;            for(int j = 0;j < count;j++)            {                while(m % prime[j] == 0) //反复除以prime[j],并累加p[j];                {                    m /= prime[j];                    p[j]++;                    if(j > maxp)maxp = j;                }            }        }        //只循环到最大下标        for(int i = 0;i <= maxp;i++)        {            printf(" %d",p[i]);        }        printf("\n");    }}

 

因子和阶乘