#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大的...