1、每個數都可以寫成幾個或乙個質數的幾次方相乘的形式。
2、質數的倍數是非質數。
3、1e9 1後面9個零的意思
#include #include#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn =sqrt(1e9)+1
;//注意是開了平方的
vector
v;bool
isp[maxn];
void
in()
isp[
0]=0
; isp[
1]=0
;
for(int i=2;i)
}return;}
intmain()
}if(n>1
)//n至多只存在乙個大於sqrt(x)的素因數。
ans++;
cout
}return0;
}
素數篩法打表
篩法打素數表是一種高效的打表方法,具體做法是 先把n個自然數按次序排列起來。1不是質數,也不是合數,要划去。第二個數2是質數留下來,而把2後面所有能被2整除的數都劃去。2後面第乙個沒劃去的數是3,把3留下,再把3後面所有能被3整除的數都劃去。3後面第乙個沒劃去的數是5,把5留下,再把5後面所有能被5...
素數打表 篩法
打表 是一種典型的用空間換時間的做法,一般指將所有可能需要用到的結果事先計算出來,這樣以後後面需要用到時就可以直接查表獲得。在什麼情況下我們需要打表?1 在程式中一次性計算出所有需要用到的結果,之後查詢直接取這些結果。舉個例子,假如我們算fibonacci數中的f n 我們假如需要算很多次q次 比如...
篩法素數打表方法
埃拉託斯特尼篩法,是一種西元前250年由古希臘數學家埃拉託斯特尼所提出的一種簡單檢定素數的演算法。給出要篩數值的範圍n,找出以內的素數。先用2去篩,即把2留下,把2的倍數剔除掉 再用下乙個質數,也就是3篩,把3留下,把3的倍數剔除掉 接下去用下乙個質數5篩,把5留下,把5的倍數剔除掉 不斷重複下去....