求解素數問題演算法

2021-10-03 08:46:23 字數 827 閱讀 4916

在解程式題的過程中經常會遇到素數的判斷問題,在保證不能超時的同時要判斷是否為素數,大多數初學者會採用第一種演算法:

1.(單單列出演算法,不列出完整程式**)

#include

#include

intf

(int n)}if

(a==0)

test++;if

(test==n)

return i;

}}

這就是求第n個素數的演算法(姑且稱之為演算法,但是複雜度實在是太高了),但是在跑**的過程中,會發現經常出現超時的報錯提醒,因為這個複雜度太大,達到了o(n*2),下面提供一種o(n)的求素數演算法

2.(僅提供演算法,不提供完整程式)

#include

#include

#include

using namespace std;

bool b[

100000];

intf()

b[2]=true;

for(i=

3;i<

100000

;i++)}

}

演算法分析:這裡面利用到的演算法是如果n是素數,那麼2n,3n等等一定就是合數,通過遍歷一遍的方式來確定數是否是素數,同時在初始化的過程中,奇數的初始值全部設定為true,偶數的初始值全部設定為false,因為我們知道,除了2以外,所有的素數全部是奇數。演算法的巧妙在於,在比較大的合數中,通過確定它的乙個比較小的因子,就可以判斷較大的數。節省了大量的執行時間,複雜度最大也就是個o(n^3/2),用乙個bool型別的陣列就將很大範圍內的素數和合數都進行了判斷。

python求解素數相關問題

證明乙個數是不是素數 def pd prime n if n 1 print 1既不是質數,也不是合數 return false i 2 is flag true while i i n if n i 0 is flag false i 1 if is flag print n return is ...

素數求解問題及優化

素數求解問題在程式設計師的面試中是個很簡單的問題,經常是小公司的基礎面試題。然而因為一些個小緊張什麼的,弄跪了些許人 那麼,今天就關於這個問題我們來進行總結及方案優化 素數概念 除了1和它本身不能被其他數整除的數字都是素數 思路 因此判斷乙個整數m是否是素數,只需把m被 2 m 1 之間的每乙個整數...

素數演算法問題

素數這個問題其實說簡單也簡單,成立條件是1和自己本身,可是假如從演算法角度來考慮,發現有些演算法其實很耗用資源的 下面幾個方法希望讀者可以用心體會演算法的奇妙之處!2017年 12月2號 判斷素數的做法 定義 除了1和本身不存在其他約數的正整數字素數 include include int ispr...