以前求素数总是用一堆数去试除,模有0就不是素数,这样做的实在费劲。
在看别人的代码时发现一个比较优雅的方法。用空间换时间,有些时候是很可行的。
求50000内的素数:
int prime[5500]; //PI(50000)<5500 bool flag[50000]; void getprime() { int i,j; memset(flag,0,sizeof(flag)); for(i=2;i<50000;i++) { if(!flag[i]) { prime[num1++]=i; for(j=i*i;j<50000;j=j+i) flag[j]=true; } } }
原文:http://www.cnblogs.com/shenchuguimo/p/6322567.html