打印100以内的素数
方法一、利用筛选法。
首先定义一个数组a[i]=1,初始化整个数组,全部初始化为1。从2开始,所有2的倍数都标记为0.然后所有3的倍数都标记为0。然后是4,但因为4已经被标记为0了,跳过。然后是5。。。。。直到所有的数都循环一遍。
代码:
#include <iostream>
using namespace std;
int main()
{
int a[101], i, j;
for(i=1; i<101; i++)
a[i]=1;
for(i=2; i<101; i++)
{
if(a[i]!=0)
for(j=i+i; j<101;)
{
if(j%i==0)
a[j]=0;
j=j+i;
}
}
for(i=2; i<101; i++)
if(a[i]!=0)
cout << i << " ";
return 0;
}
using namespace std;
int main()
{
int a[101], i, j;
for(i=1; i<101; i++)
a[i]=1;
for(i=2; i<101; i++)
{
if(a[i]!=0)
for(j=i+i; j<101;)
{
if(j%i==0)
a[j]=0;
j=j+i;
}
}
for(i=2; i<101; i++)
if(a[i]!=0)
cout << i << " ";
return 0;
}
方法二、用开根号的办法求值
代码:
#include <stdio.h>
#include <math.h>
int main()
{
int a[101], i, j, k;
for(i=2; i<101; i++)
{
k=(int)sqrt(i);
for(j=2; j<=k; j++)
{
if(i%j==0)
break;
}
if(j>k)
printf("%d ", i);
}
return 0;
}
#include <math.h>
int main()
{
int a[101], i, j, k;
for(i=2; i<101; i++)
{
k=(int)sqrt(i);
for(j=2; j<=k; j++)
{
if(i%j==0)
break;
}
if(j>k)
printf("%d ", i);
}
return 0;
}