素數判定 暴力法

2022-08-19 14:30:15 字數 1000 閱讀 7329

總綱指路鏈結

在學習git的同時建立了乙個github倉庫,**在這裡,指路。

1.1 演算法描述:

假設要判斷n是否為素數(判斷n是否還有除1和本身之外的因子),該方法的主要思路就是從2開始遍歷到n-1,檢視是否可以被n整除,如果找到乙個可以整除,那麼n為合數;如果沒有找到可以整除的,那麼n為素數。

1.2 演算法實現(c++):

#include#include 

using

namespace

std;

bool isprime_1(int

n)

return1;

}int

main()

2.1 演算法描述:

我們知道,如果乙個數可以進行因數分解,那麼分解時得到的兩個因數一定是乙個小於等於sqrt(n),乙個大於等於sqrt(n),據此,上述**中並不需要遍歷到n-1,遍歷到sqrt(n)即可。**可以改為如下的過程,提高效率。

2.2 演算法實現(c++):

#include#include

#include

using

namespace

std;

bool isprime_2(int

n)

return1;

}

3.1 演算法描述:

我們還可以進一步在剩餘的sqrt(n)中減少一些需要遍歷的數,首先判斷n是不是2的倍數,如果是2的倍數,那麼肯定是合數;如果不是2的倍數,那麼僅需要遍歷3-sqrt(n)中的奇數即可,減少了一半的量。

3.2 演算法實現(c++):

#include#include

#include

using

namespace

std;

bool isprime_3(int

n)

return1;

}

素數判定 暴力到高效

在平常做數論的題時,大部分都要涉及到判定 篩 素數吧,而今天我將給大家展示不同演算法的判定 篩 素數方法.例題 p3383 模板 線性篩素數 這個比較暴力,直接從2列舉到n 1,再看能不能整除判斷即可,也就是看這個數除了1和自己本身還有沒有其他的因數 bool prime int n 時間複雜度是o...

素數的判定五法

輸出 n 以內的所有質數,遍歷 1,n 的所有數,每個數 p 都不能被 2,p 整除,則為質數 針對任意數 n 如果有乙個數 p p le sqrt 是 n 的因子,則一定有 u frac u geq sqrt 也是它的因子,如果不存在 p 這樣的因子,那麼 n 就是質數 時間複雜度 o n inc...

素數判定(素數篩法)(尤拉)

這裡主要說一下素數篩法,該方法可以快速的選取出1 n數字中的所有素數。時間複雜度遠小於o n sqrt n 方法為 從2開始,往後所有素數的倍數都不是素數。最後剩下的數都是素數。再說說尤拉公式,用來解決所有小於n中的數字有多少個與n互質,用 n 表示。n n 1 1 q1 1 1 q2 1 1 qk...