C++不同的质因子统计n!中不同的质因子各有多少个?例如6!=720=2*2*2*2*3*3*5;质因子2有4个3有2个5有1个.输入:一个正整数 n ( 10
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/18 03:44:13
C++不同的质因子统计n!中不同的质因子各有多少个?例如6!=720=2*2*2*2*3*3*5;质因子2有4个3有2个5有1个.输入:一个正整数 n ( 10
C++不同的质因子
统计n!中不同的质因子各有多少个?例如6!=720=2*2*2*2*3*3*5;质因子2有4个3有2个5有1个.输入:一个正整数 n ( 10
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[]里面计数就行了.
最后分别打印因子和因子对应的个数就行了.