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 每個測試例...