目录
1.问题描述
输出[0,n]范围内所有素数
2.基本思路
(1)定义并初始化变量 p = 2 (因为2是最小的质数)
(2)将所有p的倍数(2p,3p,4p,…),标记为非质数(合数)
(3)找到下一个没有标记且大于p的数。如果有,将该值赋予p,重复步骤(2);如果没有,则 结束运算
(4)运算结束后,余下所有未标记的数都是质数
3.代码
#include <iostream>
using namespace std;
int main()
{
int n,p;
cin>>n;
int a[n];
for(int i=0;i<=n;i++)
{
if(i==0||i==1)
a[i]=0;
else
a[i]=i;
}
for(int i=2;i<=n/2;i++)
{
if(a[i]!=0)
p=i;
for(int j=p+1;j<=n;j++)
{
if(j%p==0)
{
a[j]=0;
}
}
}
for(int i=0;i<=n;i++)
{
if(a[i]!=0)
cout<<a[i]<<endl;
}
return 0;
}
小新有话说
希望此文能够帮助到有需要的朋友们,也在此提前预祝大家新年快乐!