筛选法求素数

xiaoxiao2025-08-05  23

判断一个数N是不是素数,可以用2到之间的所有整数去除n,看能否整除。如果都不能整除,那么n是素数(慢)。筛选法求素数:把2到n中所有的数都列出来,然后从2开始,先划掉n内所有2的倍数,然后每次从下一个剩下的数(必然是素数)开始,划掉其n内的所有倍数。最后剩下的数,就都是素数。空间换时间,加快了计算速度。 #include <iostream> //筛法求素数 #include <cmath> using namespace std; #define MAX_NUM 100 bool isPrime[MAX_NUM + 10]; //最终如果isPrime[i]为1,则表示i是素数 int main() { for( int i = 2;i <= MAX_NUM; ++i) //开始假设所有数都是素数 isPrime[i] = true; for( int i = 2;i <= MAX_NUM; ++i) { //每次将一个素数的所有倍数标记为非素数 if( isPrime[i]) //只标记素数的倍数 for( int j = 2 * i; j <= MAX_NUM; j += i) isPrime[j] = false; //将素数 i 的倍数标记为非素数 } for( int i = 2;i <= MAX_NUM; ++i) if( isPrime[i]) cout << i << endl; return 0; }

转载请注明原文地址: https://www.6miu.com/read-5034340.html

最新回复(0)