计算1到100之内的素数 只算出来2 3

img

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;
}