ACM學習筆記之 數學問題 素數

2021-06-23 00:24:57 字數 594 閱讀 6574

素數是非常簡單的乙個概念,所謂素數,是指恰好有2個約數

的整數,那麼這兩個數就是它本身和1。

素數的判定方法有這麼幾種,

(1)簡單判定,

(2)飛馬測試

(3)r 演算法            

(4)數域篩法

(5) 埃式篩法

(6)區間篩法

那麼先從最簡單的判素方法學起~~~

1.素性測試

給定整數n,請判斷n是不是素數

# includebool is_prime( int n )

return n!=1;

}int main(void)

在此,對這個公式做乙個簡要的證明,如果d是n的約數(n%d == 0),

那麼n/d也是n的約數(n%(n/d) == 0)。用n = d*n/d 可以推出來

sqrt(n)>= min ( d, n/d ), 那麼我們就可以將原先的[ 2,n-1 ]

的區間問題轉化到 [ 2,sqrt(n)],並且該演算法的世間複雜度為 o(sqrt(n))

《演算法筆記》5 4小節 數學問題 素數

題目描述 輸入乙個整數n 2 n 10000 要求輸出所有從1到這個整數之間 不包括1和這個整數 個位為1的素數,如果沒有則輸出 1。輸入輸入有多組資料。每組一行,輸入n。輸出輸出所有從1到這個整數之間 不包括1和這個整數 個位為1的素數 素數之間用空格隔開,最後乙個素數後面沒有空格 如果沒有則輸出...

《演算法筆記》5 4小節 數學問題 素數

output the k th prime number.輸入k 10000 輸出the k th prime number.樣例輸入 copy 1050 樣例輸出 copy 29229 注意maxn的取值大小,我這裡取了1000000.切記打表一次就行,不能把find prime函式放在while...

ACM選修課1 數學問題

memset 函式 memset 陣列名,1 0 1,sizeof a 重置為1是陣列為任意正數 求乙個數的位數 int log10 n 1,公式log10 i i 必須為double型別 the hardest problem ever include using namespace std in...