欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用筛选法求100以内的素数

程序员文章站 2022-05-11 20:25:54
...

筛选法就是“埃拉托色尼筛法”,方法是在纸上写出1~1000的全部整数,然后逐个判断他们是否为素数,挖掉非素数,剩下的就是素数。
算法思想:
1、挖掉1
2、用下一个未被挖掉的数p除p后面各数,把p的倍数挖掉
3、检查p是否小于√p的整数部分,如果是,则返回2继续执行,否则结束
4、剩下的数就是素数
代码:

#include<cstdio> 
#include<math.h>
int main(){
	int a[101],n=0;
	for(int i=1;i<=100;i++) a[i]=i;
	a[1]=0;
	for(int i=2;i<(int)sqrt(100);i++){
		for(int j=i+1;j<=100;j++){
			if(a[i]!=0&&a[j]!=0){
				if(a[j]%a[i]==0) a[j]=0;
			}
		}
	}
	for(int i=2;i<100;i++){
		if(a[i]!=0){
		printf("%5d",a[i]);
		n++;
	}
		if(n==10){
		printf("\n");
		n=0;		
	}
	}
	printf("\n");
	return 0;
}

用筛选法求100以内的素数

相关标签: C/C++ 算法