題目:将一個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5
一、質因數:素數
二、正整數n分解的思路,先找一個最小的質因數m,
1)若m==n,則分解完畢列印輸出,否則2)
2)若m<n,且n%m==0,列印出m的值,除數n/m判斷是否能被m整除,若能,重複2),不能則3)
3)m++,執行1)
那麼因子為什麼不用判斷是否為質數呢?因為第2)步的重複執行,把不是質數的數pass掉了,比如20的因子4不是質數,但它已經被2*2取代了
#include <stdio.h>
int main()
{
int n, m;
printf("Input a positive integer: ");
scanf("%d", &n);
printf("%d=", n);
for(m=2; m<=n; m++){
while(n % m == 0){
//if(n==m) break;//注釋掉這句,最後的*1才會輸出
n = n / m;
printf("%d*", m);
}
}//最終n==1,即m>n,退出循環
printf("%d",n);
return 0;
}