数组 筛法求素数

描述

筛法

mycode

# include <iostream>
# include <cstdio>
# include <math.h>
using namespace std;
# define NUM 100
int isprime [NUM];
int main()
{
	 for(int i=0;i<NUM;i++)
	 {
	 	isprime[i]=1;
	 }
	 for(int j=2;j<NUM;j++)
	 {
		 for(int k=2;j*k<NUM;k++)
		 {
		 	isprime[j*k]=0;
		 }	
	 }
	 for(int i=2;i<NUM;i++)
	 {
	 	if(isprime[i]==1)
	 	{
	 	cout<<i<<endl;
		}
		
	 }
	 
}

例题代码

# include <iostream>
# include <cstdio>
# include <math.h>
using namespace std;
# define NUM 100
bool isprime [NUM+10];//之所以用char,是因为int占8字节;char占一个字节,8个比特 ;isprime里只存放0或1,故也可用bool 
int main()
{
	 for(int i=2;i<=NUM;i++)//素数从2开始,所以与0,1无关,设置isprime的值也从2开始  
	 {
	 	isprime[i]=true;
	 }
	 for(int j=2;j<=NUM;j++)
	 {
	 	if(isprime[j]==1)
	 	{
	 		for(int k=2;k*j<=NUM;k++)
	 		{
	 			isprime[k*j]=false;
			}
		}
	 } 
	 	 
	 for(int i=2;i<NUM;i++)
	 {
	 	if(isprime[i]==true)
	 	{
	 	cout<<i<<endl;
		}		
	 }	 
}