求出區間[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 因為因數都是成對出現的,如...