失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 因子和质因子的分解

因子和质因子的分解

时间:2020-10-28 23:48:23

相关推荐

因子和质因子的分解

质因子分解:首先满足分解的因子为质数(1不为质数)任何一个自然数都可以分解为质数的乘积例如:15=3*5 20=2*2*5 所以15的质因子为3和5 ,20的质因子为2和5

用公式来说就是 其中p1 p2等都是质因子,x的因子的个数

因子分解:分解的因子可以不为质数,例如:20=1*20 20=2*10 20=4*5 所以因子(这里求的是不包括自身的因子):1,2,4,5,10原理就是:枚举[1,n½]找出区间内能被n整除的数,找到一个就可以找到俩个因子。

质因子分解还可以先对素数进行筛选,再找质因子比较简单 可以参考这篇博客:/qq_44797733/article/details/104702311

code:

#include<iostream>#include<cstring>#include<cstdio>#include<vector>#include<map>using namespace std;const int N=100;//因子和质因子分解100以内的数int num=0;map<int ,int> mp;//记录每个质因子的次数 int a[N]; void cal1(int x ){for(int i=2;i<=x/i;i++){//不i*i<=n的原因是防止爆int if(x%i==0) a[num++]=i;while(x%i==0){mp[i]++;x/=i;}}if(x>1) a[num++]=x,mp[x]++;//可能最后一个没有算上,特殊判断一下 }void cal2(int x){a[num++]=1;for(int i=2;i<=x/i;i++){if(x%i==0){//一个数可以产生俩个因子,只要俩个因子不相同 a[num++]=i;if(x/i!=i) a[num++]=x/i;}}}int main(){int n;cin>>n;int k;//如果是1质因子分解如果是0因子分解 cin>>k;if(k){cal1(n);for(int i=0;i<num;i++){cout<<a[i]<<" "<<mp[a[i]]<<endl;}}else{cal2(n);for(int i=0;i<num;i++){cout<<a[i]<<" ";}}return 0;}

输入:20 1(质因子分解)

输出:2 2

5 1

输入:20 0(因子分解)

输出:1 2 10 4 5

如果觉得《因子和质因子的分解》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
质因子分解习题

质因子分解习题

2023-05-14

质因子分解(Java)

质因子分解(Java)

2021-12-12

7-138 质因子分解

7-138 质因子分解

2019-04-20

质因子分解

质因子分解

2023-03-31