快速求得乙個數字的所有素因子

2022-08-31 19:15:24 字數 538 閱讀 8912

對於求乙個數 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...