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("\nplease input a number:\n"); 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 }