分解質因數得到的對素數篩新的理解

2021-09-16 21:06:03 字數 949 閱讀 7118

求出區間[a,b]中所有整數的質因數分解。

輸入兩個整數a,b。

每行輸出乙個數的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是從小到大的)(具體可看樣例)

3 10
3=3

4=2*2

5=56=2*3

7=78=2*2*2

9=3*3

10=2*5

本題開始是從因數方面入手的,遲遲找不到解決口,之後突然間意識到,求的是某個數的質因數之積,果斷從結果入手。

開始還糊塗地eratosthenes篩了,忘了只能作為判斷條件。。

不過改過之後還是把陣列元素值作為判斷條件,用下標輸出,完美。

不過之前因為這個原因搜了下部落格,發現了和eratosthenes篩乙個原理的免寫了個函式的做法:

直接從2開始判斷,能整除就輸出,不能就+1, 當時還在疑惑這會不會把某些合數誤放進去。

現在明白了,這不是和eratosthenes篩乙個原理嗎,只不過篩的時候是直觀的乙個個判斷,而這裡是乙個整除解決所有的可能問題。

eg:8 = 2*2*2,根本沒機會見到4.

10 = 2*5

12 = 2 * 2 * 3

14 = 2 * 7

39 = 3 * 13

☆121 = 11 * 11

等一系列情況,你根本沒法見到合數,或者是合數根本不是他們的因數。

所以就ok啦

貼個**

#include#includevoid pri(int n)

if(x == 1)

printf("%d\n", k);

} k++;

} if(x > 1 && x <= n)

printf("%d\n", x);

}int main()

return 0;

}

分解質因數 and 素數篩法(打表) 1e9

1 每個數都可以寫成幾個或乙個質數的幾次方相乘的形式。2 質數的倍數是非質數。3 1e9 1後面9個零的意思 include include include include include include include include include include using namespace...

hdu 6069 素數篩 區間質因數分解

給 l,r 區間的每乙個數都質因數分解的複雜度可以達到 r l logr,真的漲姿勢 另外,質因數分解有很重要的一點,就是只需要打sqrt r 以內的素數表就夠了 因為超過sqrt r 的至多只有乙個,分解其他的那些剩下的就是了。果然學習的過程中要精益求精,把時間和空間都盡量降到最低。此外還有乙個很...

演算法刷題 數論 質數的判定 分解質因數 篩質數

質數 在大於1的整數中,如果只包含1和它本身這兩個約數,那麼這個數就稱為質數。判斷質數最暴力的寫法,按照質數的定義 看是否有其他的因子。最樸素的暴力的時間複雜度o n 時間複雜度o n bool isprime int n 質數的判定 試除法 優化 列舉到n sqrt n 因為因數都是成對出現的,如...