b等于0后b没有在初始化成1,结果b一直等于0所以不管如何都不输出
在以此判断后应重新把bool改为1
不妨试试埃氏筛
#include<iostream>
const int N = 5e6 + 10;//总的范围规定在这里
using namespace std;
bool su[N];
void sushu()//我们将这个埃氏筛法写成一个函数
{
for(int i = 0; i <= N; i++)
{
su[i] = 1;//先全部置为真
}
su[0] = su[1] = 0;//1 0 不是素数
for(int i = 2; i <= N; i++) //从2开始往后筛
{
if(su[i])
{
for(int j = i + i; j <= N; j += i)
{
su[j] = 0;
}
}
}
}
int n = 1, m = 100;
int main()
{
/*
我们在程序刚开始先调用这个函数
把这个 sushu 数组处理成我们想要的样子:用来判断素数。
这可能就是预处理的思想。
我们在开头处理这一次把 sushu 数组里面下标是素数的全部变成了 "1"
后边想判断是不是素数直接用 sushu[i] 是不是真就好了
*/
sushu();
for(int i = n; i <= m; i++)//遍历头到尾,判断就行了
{
if(su[i])
{
cout << i << " ";//如果是素数 就输出
}
}
return 0;
}