素數的判斷方法與唯一分解定理
阿新 • • 發佈:2018-12-29
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.費馬小定理
唯一分解定理