[模板]合数分解
来源:互联网 发布:java输出语句换行符 编辑:程序博客网 时间:2024/05/16 19:53
合数分解模板:
顾名思义,给定一个合数,完成以下功能:
将该合数分解成质因数,统计出出现不同的质因数的个数,分别出现过的质因数为哪几个,以及出现过的质因数的数量。
const int MAXN =10010;int prime[MAXN+1];void getprime(){ memset(prime,0,sizeof(prime)); for(int i = 2; i<=MAXN;i++) { if (!prime[i]) prime[++prime[0]]=i; for(int j = 1;j<=prime[0] &&prime[j] <= MAXN/i;j++) { prime[prime[j]*i] = 1; if(i % prime[j] ==0) break; } }}long long factor[100][2];int fatCnt;int getFactors(long long x){ fatCnt = 0; long long tmp = x; for(int i = 1; prime[i]<=tmp/prime[i];i++) { factor[fatCnt][1] = 0; if(tmp % prime[i] == 0) { factor[fatCnt][0] = prime[i]; while(tmp%prime[i]==0) { factor[fatCnt][1]++; tmp /= prime[i]; } fatCnt++; } } if (tmp != 1) { factor[fatCnt][0] = tmp; factor[fatCnt++][1] = 1; } return fatCnt;}
在该函数中需要先使用到素数表,prime[]保存的是2,3,5,7等从小到大的素数,素数表的求法在模板中也写下来了。
统计完毕后,factor[fatCnt][0]存的是分解该质因数后出现过的质数,factor[fatCnt][1]存的是分解质因数后该质数出现的次数。返回值fatCnt是指总共出现过的fatCnt种类。
根据模板编写主函数如下:
getprime(); cout<<getFactors(3867500)<<endl; for(int i =0;factor[i][0]!=0;i++) cout<<factor[i][0]<<" "; cout<<endl; for(int i =0;factor[i][1]!=0;i++) cout<<factor[i][1]<<" "; cout<<endl;
输出结果为
52 5 7 13 172 4 1 1 1
说明该合数由5个不同的质数组成,
质数分别是2、5、7、13、17。
每个质数的个数分别为2、4、1、1、1。
(附:分解因式):
3867500 = 2*2*5*5*5*5*7*13*17
factor[0…n][0]
2,5,7,13,17,0,0,0,0,……
factor[0…n][1]
2,4,1,1,1,0,0,0,……
其他情况以此类推,可以自己测试一下其他的数据。
0 0
- [模板]合数分解
- 合数分解
- poj1811(素数判断与合数分解模板)
- 合数分解 UVA
- 合数唯一分解定理
- 素数表生成模板 与 合数进行素因子分解模板
- (Relax 数论 1.5)POJ 1811 Prime Test(MillRabin模板题+Pollard模板题:判定大素数&&合数分解)
- 【数论 / 数值】【RQNOJ】大合数分解
- 【SGU】113. Nearly prime numbers 合数分解
- HDU 5317 RGCDQ (合数分解+预处理)
- hdu 4777 树状数组+合数分解
- LightOJ - 1236 Pairs Forming LCM 合数分解
- 素数表的快速建立,合数分解,1-2^31内某个长度小于10w的区间素数筛选的三个模板及解析
- Pollard "p-1"方法 分解合数的因素;
- 把一个合数分解为几个质因数相乘
- LightOJ 1341 - Aladdin and the Flying Carpet【合数分解】
- 质数与合数系列——分解质因数
- 分解质因数模板
- 用Apache Kafka构建流数据平台
- IOS初级:UIScrollView & UIPageControl
- J2EE框架——struts.xml配置
- 【opencv】opencv之头文件分析【转】
- Guava集合
- [模板]合数分解
- SQL中WHERE子句中的连接顺序
- 利用JS实现简单的瀑布流效果
- oracle logminer初步学习与使用
- 使用java中replaceAll方法替换字符串中的反斜杠
- JVM-verbose参数详解
- 编译VC静态库中遇到的C2859错误解决方案
- ubuntu中安装jdk
- Cocos2dx------2048游戏