1. 程式人生 > >素數的判斷方法與唯一分解定理

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

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

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

2.素數篩法,2開始,2的倍數肯定不是素數,再向右掃描,直到限制處,如果掃描到素數
(記錄下來),重複之前的過程,剔除之後的部分合數(準確的說是關於當前質數的倍數),如果掃描到合數則跳過(表示前面已經更新過這個數不是素數)。然後都掃描一遍即可把2--n的素數求解出來。

時間複雜度O(n)

 程式碼模板如下

#include<stdio.h>
#include<math.h>
#include<string.h>
#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;j<n;j+=i) 
            judge[j]=1;     //素數賦值為0,合數為1     }
      }
    
}

3.費馬小定理

                                                                      唯一分解定理