素數的判斷方法與唯一分解定理

2021-07-29 07:11:36 字數 654 閱讀 2342

1.常規的方法,判斷從2到sqrt(n),是否存在可以被n整除的。

時間複雜度為o(n^2)

2.素數篩法,

2開始,2的倍數肯定不是素數,再向右掃瞄,直到限制處,如果掃瞄到素數

(記錄下來),重複之前的過程,剔除之後的部分合數(準確的說是關於當前質數的倍數),如果掃瞄到合數則跳過(表示前面已經更新過這個數不是素數)。然後都掃瞄一遍即可把2--n的素數求解出來。

時間複雜度o(n)

**模板如下

#include#include#include#define n 1000

int judge[n+1];

int main()

{ int n;

scanf("%d",&n);

int m=sqrt(n+0.5);

memset(judge,0,sizeof(judge));

for(int i=2;i<=m;i++)

if(!judge[i])

{for(int j=i*i;j3.費馬小定理

比較複雜:

唯一分解定理

唯一分解定理

任意乙個大於1的正整數都能表示成若干個質數的乘積,且表示的方法是唯一的。換句話說,乙個數能被唯一地分解成質因數的乘積。因此這個定理又叫做唯一分解定理。c include include include using namespace std int main int num 32 int local...

唯一分解定理

唯一分解定律 又稱為正整數的唯一分解定理,即 每個大於1的自然數均可寫為質數的積,而且這些素因子按大小排列之後,寫法僅有一種方式。當題目有大數相除,求餘數時,精度要求高時.就要運用唯一分解定律 以下唯一分解定律證明 為了真正地證明,分解質因數的方法是唯一的,我們將再次用到反證法。假設存在某些數,它們...

唯一分解定理

problem description 假設x是乙個正整數,它的值不超過65535 即1 x 65535 請編寫乙個程式,將x分解為若干個素數的乘積。input 輸入的第一行含乙個正整數k 1 k 10 表示測試例的個數,後面緊接著k行,每行對應乙個測試例,包含乙個正整數x。output 每個測試例...