HUSTOJ 1033: 质因子分解

来源:互联网 发布:underscore源码解析 编辑:程序博客网 时间:2024/04/29 08:06

Description

任意输入一正整数N,求出它的所有质因子。如:10=(2 5);20=(2 2 5)。

Input

输入只有一行,包括1个整数。

Output

输出只有一行.为你分解的质因子,数字间用一个空格分开。

Sample Input

36

Sample Output

2 2 3 3

算法思想:ollard Rho因数分解

1975年,John M. Pollard提出了因数分解的方法,Pollard Rho快速因数分解。该算法时间复杂度为O(n^(1/4))。
分解质因数代码:
将一个正整数分解质因数。例如:输入36打印出36=2*2*3*3*。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
 重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
问题解决方案源代码如下:
<span style="font-family:Times New Roman;">#include<cstdio>int main(){int num,i;scanf("%d",&num);for(i=2;i<=num;i++){while(num!=i){///当质数不相等时候循环if(0==num%i){///这个数能够被整除   printf("%d ",i);   num /= i;}else{   break;}}}printf("%d",num);///最后一个数字就是最后一个或者开始相等的一个return 0;}</span><span style="font-family:Microsoft YaHei;"></span>

0 0