HUSTOJ 1033: 质因子分解

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>

猜你喜欢

转载自blog.csdn.net/lovequanquqn/article/details/51379369