演算法 高效求素數

2022-07-28 15:12:39 字數 434 閱讀 9864

質數又稱素數。指在乙個大於1的自然數中,除了1和此整數自身外,不能被其他自然數整除的數。1不是素數。

乙個非素數可以由幾個素數因子相乘得到,這些因子一定小於這個數的開方,因此可通過這個性質求素數:

void slow(int

n) }

if(flag)

cout

<"";

}cout

<}

但這種演算法效率低,複雜度為o(n*sqrt(n))。使用空間換效率的篩選素數法可大大提高效率。原理是從小到大搜尋素數,找到乙個素數後,此素數的整數倍一定不是素數。

void fast(int

n) }

}for(i=2;i<=n;++i)

cout

}

求素數的高效實現

對於給定的乙個數n,如何判斷其是否是素數呢?最簡單最直觀的方法是試除法 下面的演算法1 2 3 還有一種方法是rabin miller演算法。from 2 to n思路 從2到n 1,做取模運算n mod i 若運算結果均為 0 則 n 為素數 實現 public boolean isprimenu...

演算法 求素數

求101到200之間的素數並計算其總數 演算法分析 判斷素數的方法 用乙個數分別去除2到sqrt 這個數 如果能被整除,則表明此數不是素數,反之是素數。1.利用判斷素數的方法我們可以用每個數去除以2到sqrt 該數 但是再用迴圈遍歷的過程中會存在乙個很嚴重的問題。那就是101到200之間非素數也會有...

演算法 求素數

這裡我寫了幾個求素數的方法和大家交流一下 進行窮舉 時間複雜度o n private static boolean primer1 int number return true 使用 n 進行計算 時間複雜度o n private static boolean primer2 int number ...