遍歷模除質數篩選法

2021-08-20 11:40:26 字數 737 閱讀 1313

#include #include #include /**

演算法邏輯解析:乙個數a除以a前邊所有的質數都除不盡,則a也為質數。

此例中,prime陣列存放已確認的質數,偶數跳過,直接確認奇數是否為質數。

易錯點:核心邏輯是a於prime陣列中已存在的數都要判斷,都除不盡a才是質數,

有乙個除不盡,就是合數,就要a+2,並且,prime要回到第乙個元素。

另外,**中有兩個if()break不得不加上,解決了邊界問題。

**/unsigned int prime(int *prime,unsigned int n,unsigned long long int* sum)

else j++;

}if(i>n) //加上break,防止由while返回已經超出了n的i進入陣列。i=上乙個奇數+2

break; //如果把prime[j]=i;放到while上邊意圖減少乙個break語句,但是for迴圈一進來會產生更多的麻煩

prime[j]=i; /****************/// printf(" ●");//列印質數「 」

*sum=*sum+i;

}return k+1;

} //void prime

int main(int argc,char *argv)

//int main

質數 篩選法

篩數法求素數 篩數法求素數的基本思想是 把從1開始的 某一範圍內的正整數從小到大順序排列,1不是素數,首先把它篩掉。剩下的數中選擇最小的數是素數,然後去掉它的倍數。依次類推,直到篩子為空時結束。public void printprimes int n 定義arr陣列來表示篩選出來的素數 boole...

質數篩選 素數篩選法

int prime 100010 void prime for int i 1 i i 1000000 i define size 1000000 int main 元素值為0代表是素數 int prime size int pos 0 int flag for int i 2 i size i p...

用篩選法求質數

file exam 1 1.c brief exam 1 1 用篩選法求100以內的質數 質數 prime number 又稱素數,有無限個。乙個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的因數 否則稱為合數。根據算術基本定理,每乙個比1大的...