首页 > 代码库 > 筛选法求素数

筛选法求素数

// 100 prime number// 筛选法 即:“埃拉托色尼筛选法”// 找出一个非素数就把它挖掉,最后剩下就是素数/* * 找出1~n的素数表 * 1、挖去1 * 2、用下一个未挖去的数p去除p后面各数,把p的倍数挖掉 * 3、检查p是否小于n的整数部分(如果n=1000,则坚持p<31?), *    如果是,则返回(2)继续执行,否则结束。 * 4、剩下的就是素数了 */#include<iostream>#include<iomanip>using namespace std;#include<cmath>int main() {	int i, j, n, a[101];	for (i = 1; i <= 100; i++) {		a[i] = i;	}	a[1] = 0;	for (i = 2; i < sqrt(100); i++) {		for (j = i + 1; j <= 100; j++) {			if (a[i] != 0 && a[j] != 0) {				if (a[j] % a[i] == 0) {					a[j] = 0;				}			}		}	}	cout<<endl;	for (i = 1, n = 0; i <= 100; i++) {		if (a[i] != 0){			cout<<setw(5)<<a[i]<<" ";			n++;		}		if (n == 10) {			cout<<endl;			n = 0;		}	}    cout<<endl;    return 0;}

筛选法求素数