#includeiostream
#include'math.h '
用户命名空间STD;
判断是否为boolisprimenumber(intnumber )//素数
floatsqrtofnum=sqrt(number );
for(intj=2; j=sqrtOfNum; 从j//2到number的算术平方根迭代
判断if(number/j*j==number )/j是否为number的因子
返回假;
返回真;
}
voidprintnum(intnumber )//打印=number的所有素数
int j=0;
for(intI=2; i=number; I )
if(isprimenumber(I )==true ) {
cout('%-5d ',I ) ';
j;
if(j==0)//每10位换行一次
coutendl;
}
}
int main () )。
长启动=time (null;
cout(bool ) isprime number (29 ) endl;
打印机(1000;
长时间=时间(空);
cout endl ' time spent : ' (结束开始1 ) endl;
}
扩展数据:
C 100以内的质数代码:
#includeiostream
#includemath.h
用户命名空间STD;
常数int n=300;
bool prime[N]; //布尔数组变量0,1
语音高级(Inta );
void打印优先级(;
//主函数
int main () )
{
主编号(n;
printPrimeNum (;
返回0;
}
得到//n以内的素数
语音高级(inta )。
{
int i,j,n=0;
for(I=2; ia; I )//在第一次筛选中去除2的倍数
{
if(I%2)主映像=true;
else primei=false;
}
for(I=3; I=sqrt () double ); I )/double(n )强制将n转换为双精度整数,并求出平方根I=3、5、7、9
{
是if(primei )
for(j=2*I; jN; j=i ) prime[j]=false;//第二次筛选相当于j=ni,去除3,5,7 .的倍数
() ) /经过二轮筛查,相当于去掉了2、3、5、7…的倍数
}
打印//n以内的像素数
void打印高级版(
{
int i,n=0,primeList[N];
for(I=2; iN; I )
if(I==2)|(primei ) primeList[n]=i,n;
计数'内的素数的个数分别为' nendl '、' endl;
for(I=0; in; I ) coutprimeListi ';
}