Pollard Rho快速因数分解。时间复杂度为O(n^(1/4))。
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对 n 进行分解质因数,应先找到一个最小的质数 i,然后按下述步骤完成:
(1)如果这个质数 i 恰等于 n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n != i,但n能被 i 整除,则应打印出 i 的值,并用 n 除以 i 的商,作为新的正整数你n,
重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
程序分析:对 n 进行分解质因数,应先找到一个最小的质数 i,然后按下述步骤完成:
(1)如果这个质数 i 恰等于 n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n != i,但n能被 i 整除,则应打印出 i 的值,并用 n 除以 i 的商,作为新的正整数你n,
重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
分解质因数代码:
1 #include <bits/stdc++.h> 2 main() 3 { 4 int n,i; 5 printf(" please input a number: "); 6 scanf("%d",&n); 7 printf("%d=",n); 8 for(i=2;i<=n;i++) 9 while(n!=i) 10 { 11 if(n%i==0) 12 { 13 printf("%d*",i); 14 n=n/i; 15 } 16 else 17 break; 18 } 19 printf("%d",n); 20 }