對於求乙個數 n 的所有質因子, 通常是在 [2, sqrt(n)] 的範圍內列舉 i , 看是否能夠整除, 如果可以則輸出 i 以及 n / i.
然而, vishwas garg提供了一種更為高效(logn)的求乙個數所有素因子的方法.
除以所有以 2 為倍數的因子
列舉以 i 為倍數為因子的整數, 此時 i 肯定不為 2.
防止 n 為乙個大的素數
#include #include #include using namespace std;
void primefactor(int n)
// 經過第二步, 此時 n 一定為奇數
// 並且不存在偶數的素因子
// 所以我們可以跳過所有偶數 (i += 2)
for(int i = 3; i <= sqrt(n); i += 2)
}//此處為了防止是乙個大於 2 的素數
if(n > 2)
printf("%d ", n);
}int main()
乙個數的所有因子 Python
給定乙個自然數 n,求這個自然數的所有因子 包括1 注意 一般認為,因子就是所有可以整除這個自然數的整數,不包括這個數自身。求乙個自然數的所有因子 python 問題分析 從1到n,依次對n取餘,如果這個數是它的因子,則保留。然後對 n,i,更新重新此過程,直到結束 考慮重複新增情況 time 20...
找乙個數的因子個數,因子和
1.所有因子個數 如果乙個數是因數,就不斷除這個數,儲存這個因子次方的數 temp 運用所有因子個數計算公式 見上圖 儲存因子個數的 ans不斷乘 temp 1 注意 當最後,在 x 不斷除因數得到的值有兩種情況 x 1,這說明 x 沒有其他因子了。x 1,這時 x 為其乙個素數因子 且這個因子大於...
判斷乙個數的素因子個數
有感而發 就寫一下 doge 這裡手動 solemntee include using namespace std typedef long long ll intmain ans if n 1 ans 如果是個素數 n就不會被除到1 cout 輸出乙個非素數的所有素因子 個數 include us...