题意太多我就不写了

来说思路吧:刚看完这道题我有点蒙 不知道从何入手  后来看了大牛的博客才写出来这些,首先我们得先求出所有素数,然后用每个素数除就可以了,然后用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");
    }
}