作业帮 > 综合 > 作业

C++不同的质因子统计n!中不同的质因子各有多少个?例如6!=720=2*2*2*2*3*3*5;质因子2有4个3有2个

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/06/10 19:24:54
C++不同的质因子
统计n!中不同的质因子各有多少个?例如6!=720=2*2*2*2*3*3*5;质因子2有4个3有2个5有1个.输入:一个正整数 n ( 10
#include<iostream>
#include<cstring>
using namespace std;
int ok[256];    //计数
int num[256], cot;   //储存
void cal(int n)
{
    for(int i = 2; n != 1; i++)
    {
        while(n % i == 0)
        {
            n /= i;
            if(ok[i] == 0) num[cot++] = i;
            ok[i]++;
        }
    }
    return;
}
int main()
{
    int n;
    cin>>n;
    for(int i = 1; i <= n; i++)
        cal(i);
    for(int i = 0; i < cot; i++)
        cout<<num[i]<<" "<<ok[num[i]]<<endl;
    return 0;
}比如6!=6*5*4*3*2*1;只需要把6 5 4 3 2 1 这六个数的因子找出来,再统计数目就行了.比如因子6和4;6 = 3 * 2把3,2存储在num[]里面,并且在ok[]里面计数各为1,;4 = 2 * 2,此时因为2已经表明已经存在了,所以只需要在ok[]里面计数就行了.最后分别打印因子和因子对应的个数就行了.