天天看點

正整數分解成質因數

題目:将一個正整數分解質因數。例如:輸入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;
}
           
上一篇: 計算機進制
下一篇: 建立xml檔案

繼續閱讀