給定乙個正整數,求其所有因子與質因子。所給正整數不超過long型別的最大表示範圍。
[1, 60, 2, 30, 3, 20, 4, 15, 5, 12, 6, 10][2, 3, 5]
/**
* * 理論: 首先明確幾個數學概念和結論
* 1.乙個數的自身和1都是其因子;
* 2.乙個數的因子總是成對出現num=m*n;
* 3.如果m不等於n,則m和n必定分別位於區間[1, sqrt(num))和(sqrt(num),num]
* * 只需要在2<=i<=sqrt(num))範圍之內判斷i是否是num的因子即可
* */
public
static arraylistgetfactors(long n)
}return list;
}
/**
* * 理論: 首先明確幾個數學概念和結論
* 1.奇數必定沒有偶數因子;
* 2.所有質數(除了2)都是奇數;
* 3.正整數分為質數、合數和1,任一合數必定可以寫成若干個質數因子之積(可能會有重複質因子,比如12=2*2*3);
* * 從質數2開始,尋找目標整數num的因子(能整除num就是因子),如果當前因子出現多次,
* 那麼都記錄下來,且每次都從num中除去該因子,從而每次得到的因子必定是質因子。
* 因為合數因子本身必定可以寫成若干個質數因子之積,而我們是從最小的質數開始尋找, 所以如果能被num整除,則一定是質因子。
* * 比如num=12,其因子有1、2、3、4、6、12,其中質因子有2和3 由於4=2*2 ,6=2*3,所以當i=4或6時,num%i != 0
* */
public
static arraylistprimefactors(long num)
}// 此時num必定已經是奇數,只需要檢驗奇數是不是num的質因子
// 如果i是num的因子,則必定是質因子,記錄之
// 如果i不是num的因子,則在下一輪迴圈中檢驗下乙個奇數i+2是不是num的因子
for (long i = 3; i <= num; i += 2) }}
return list;
}
求正整數的質因子 因子個數 所有因子之和
質因子分解,輸入乙個int型正整數,輸出其分解為質因數的乘法算式。include include const int maxn 100010 bool is prime int n return 0 最後指出,如果要求乙個正整數n的因子個數,只需要對其質因子進行分解,得到質因子pi的個數分別為e1,...
質因子分解
今天沒事做,我們來寫個部落格,混混等級!我們以求數的質因子的個數為例來講解。對於質因子分解最簡單最純粹的暴力我相信大家都會的。int getnum int x return ans 但是當處理的資料比較多,而且範圍也比較大的時候顯然這種方式就不再那麼適合了。既然我們是分解質因子,那麼我們就可以先預處...
質因子分解
這個東西會在程式執行結尾提示 press any key to continue 用以結束程式。貴在那裡?讓我們來看看system pause 的流程 1 暫停你的程式 2 在sub process中啟動os 3 尋找要執行的命令並為之分配記憶體 4 等待輸入 5 記憶體 6 結束os 7 繼續你的...