C 分解質因數與完數

2021-07-23 08:45:54 字數 743 閱讀 2576

今天再來做兩道類似的迴圈題目,用到了數學知識中的因數與質數。

題目:將乙個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5。

程式分析:

對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成:

(1)如果這個質數恰等於(小於的時候,繼續執行迴圈)n,則說明分解質因數的過程已經結束,另外 列印出即可。

(2)但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整數n.重複執行第二步。

(3)如果n不能被k整除,則用k+1作為k的值,重複執行第一步。

程式如下:

#include

int main()

}printf("\n");

return 0;}

結果為:

請輸入整數:100

100=2*2*5*5

請按任意鍵繼續. . .

根據上面的內容再來做一套擴充套件題:

題目:乙個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.程式設計找出1000以內的所有完數。

程式如下:

#include

#define n 1000

int main()

}if (i == sum)

}return 0;

}結果為:6=1+2+3

28=1+2+4+7+14

496=1+2+4+8+16+31+62+124+248

請按任意鍵繼續. . .

C 分解質因數

怎樣將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n i,但n能被k整除,則應列印出i的值,並用n除以i的商,作為新的正整數...

C 分解質因數

題目描述 求出區間 a,b 中所有整數的質因數分解。輸入格式 輸入兩個整數a,b。輸出格式 每行輸出乙個數的分解,形如k a1a2a3 a1 a2 a3 k也是從小到大的 具體可看樣例 輸入樣例 3 10 輸出樣例 3 34 22 5 56 23 7 78 222 9 33 10 25 範圍與提示 ...

分解質因數

質因數概念 每個合數都可以寫成幾個質數相乘的形式,這幾個質數就都叫做這個合數的質因數。如果乙個質數是某個數的因數,那麼就說這個質數是這個數的質因數。而這個因數一定是乙個質數。演算法原理 先根據需要分解的合數生成乙個質數表。然後依次從小到大依次除合數,每次除之後都將儲存步驟。表達不好,還是看 吧 us...