John M. Pollard快速分解质因数法
来源:互联网 发布:比较可靠的网络兼职 编辑:程序博客网 时间:2024/05/16 07:08
1975年,John M. Pollard提出了一种新的算法,算法时间复杂度为O(n^1/4)。
求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。分解质因数的算式的叫 短除法,和除法的性质差不多,还可以用来求多个个数的公因式:
如24
2┖24(是短除法的符号)
2┖12
2┖6
3——3是质数,结束
得出24=2×2×2×3=2^3×3(m^n=m的n次方)
再如105
3┖105
5┖35
----7——7是质数,结束
得出105=3×5×7
John M. Pollard算法思想就是短除法用的思想。
#include<stdio.h>int main(){int num = 24;//需要分解的数,根据数的大小选择类型int i = 2;for(i=2; i<=num/2; i++){while(num >= i){if(num % i == 0)//能被整除{printf("%d * ", i);//输出num /= i;//模仿短除法}elsebreak;}}
printf("%d\n", num);return 0;}
输出:2 * 2 * 2 * 3
基本思想如上所述,具体程序需要自己改代码,比如选择数据类型,可能是long long类型,最后输出也要控制,比如num为8的时候会输出2 * 2 * 2 * 1,所以最后还得对num进行判断,如果是1则不要输出了。
最后比较完整的程序:
#include<stdio.h>int main(){long long num;printf("please input a number:");scanf("%lld", &num);int i = 2;printf("%lld = ", num);for(i=2; i<=num/2; i++){while(num >= i){if(num % i == 0)//能被整除{if(num / i == 1)printf("%d\n", i);elseprintf("%d * ", i);num /= i;//模仿短除法}elsebreak;}}if(num != 1)printf("%lld\n", num);return 0;}
- John M. Pollard快速分解质因数法
- 快速分解质因数
- 质因数分解的一些讨论(Pollard-Rho算法)
- LG的数学计划----分解质因数(Pollard-Rho算法)
- poj2429(miller_robin算法和pollard分解质因数)
- 【快速因数分解】Pollard's Rho 算法
- [快速因数分解]Pollard's Rho 算法
- Pollard的rho启发式因子分解算法 & [CodeVS 4939] 欧拉函数:Miller-Rabin + Pollard-rho 质因数分解
- 快速分解质因数,Miller_Rabin+Pollard_rho
- 习题之高斯消元 + 分解质因数 + 快速幂
- Pollard整数分解
- Pollard Rho 大数分解
- Pollard Rho因数分解
- 分解质因数
- 分解质因数
- 质因数分解
- 分解质因数
- 质因数分解
- Java高级特性之跳出多重循环
- 2440触摸屏驱动程序
- JDK5.0新特性总结
- Yii中components的使用
- MySQL 复习笔记III
- John M. Pollard快速分解质因数法
- HDU 3687 National Day Parade
- Java高级特性之继承一个内部类
- Linux 内核进程管理之进程ID
- vs2010编译glut-3.7
- Java高级特性之new一个内部类
- 1053. Path of Equal Weight——深搜
- 警惕租房的十大禁忌_家居风水自查
- 整数的拆分问题