1.有多少個約數:
先分解質因數 因數的次數分別是4,2,1 所以約數的個數為(4+1) *(2+1) *(1+1)=5*3*2=30 個 eg: 先分解質因數 720=2^4*3^2*5 因數的次數分別是4,2,1 所以約數的個數為(4+1)*(2+1)*(1+1)=5*3*2=30 個
2.所有約數之和:
2004 的約數之和為:1, 2, 3, 4, 6, 12, 167, 334, 501, 668, 1002 ,2004 = 4704
如何求乙個數所有約數之和呢?
首先,應用算術基本定理,化簡為素數方冪的乘積。
x = a1^k1 * a2^k2........an^kn x 的所有素數之和可用公式
(1+a1 + a1^2...a1^k1) * (1+a2 + a2^2...a2^k2) * .....(1+an + an^2...an^kn)表示
如: 2004 = 2^2 * 3 *167 2004
所有因子之和為(1 + 2 + 2^2) * (1 + 3) * (1 + 167) = 4704;
程式實現的時候,可利用等比數列快速求1 + a1 + a1^2 + .....a1^n;
3.分解質因數 我用的演算法是這個:
程式分析:對n 進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成:
(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。
(2)如果n > k,但n 能被k 整除,則應列印出k 的值,並用n 除以k 的商,作為新的正整數你 n, 重複執行第一步。
(3)如果n 不能被k 整除,則用k+1 作為k 的值,重複執行第一步。
分解質因數
質因數概念 每個合數都可以寫成幾個質數相乘的形式,這幾個質數就都叫做這個合數的質因數。如果乙個質數是某個數的因數,那麼就說這個質數是這個數的質因數。而這個因數一定是乙個質數。演算法原理 先根據需要分解的合數生成乙個質數表。然後依次從小到大依次除合數,每次除之後都將儲存步驟。表達不好,還是看 吧 us...
分解質因數
分解質因數 問題描述 求出區間 a,b 中所有整數的質因數分解。輸入格式 輸入兩個整數a,b。輸出格式 每行輸出乙個數的分解,形如k a1 a2 a3.a1 a2 a3.k也是從小到大的 具體可看樣例 樣例輸入 3 10 樣例輸出 3 34 2 2 5 56 2 3 7 78 2 2 2 9 3 3...
分解質因數
大數的質因數分解一直以來是亟需解決的難題。本文從最基本的試除法開始,分解質因數的方法。下面的程式在開頭定義了乙個巨集opt,如果刪掉這個定義,就可以執行最原始的演算法。一 樸素演算法 include include include using namespace std define opt int...