素数是遇到的问题经常出现的内容,判断一个数是否是素数,基本上所有人都会,但是如果是很大范围内求素数,普通的方法求容易超时,于是就可以用到可以模板,素数打表。
1 //求一千万以内的素数 2 #include3 #include 4 #include 5 using namespace std; 6 int a[10000005]; 7 void sushu() 8 { 9 memset(a,0,sizeof(a)); //所有的数标记为0,0表示素数,1表示非素数10 a[0]=1,a[1]=1; //0,1标记为非素数11 for(int i=2; i<=5000000; i++)12 {13 if(!a[i])14 for(int j=i+i; j<=10000000; j+=i) //每一位由素数组成的数,一定不是素数15 {16 a[j]=1;17 }18 }19 for(int i=1; i<=1000; i++)20 if(!a[i])21 printf("%d ",i);22 }23 int main()24 {25 sushu();26 }