用c++输出100-200内的素数,程序运行不对

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include <iostream>
#include <cmath>
using namespace std;
int main(){
    for(int i=100;i<=200;++i){
        double sqrti=sqrt(i*1.0); 
        for(int j=2;j<=sqrti;++j)
        {
        if(i%j==0){
        cout<<i;
        return 1;
            }    
        }
    }return 0 ;
}

#include <iostream>
#include <cmath>
using namespace std;
int main(){
    for(int i=100;i<=200;++i){
        int flag = 0;
        for(int j=2;j<=sqrt(i);++j)
        {   
            // 如果能被整除,说明不是素数
            if(i%j==0){
                flag = 1;
                break;
            }    
        }
        // 如果flag==0,说明是素数
        if (flag == 0) cout << i << " ";
    }
    return 0 ;
}

#include<iostream>
using namespace std;

 int main()
 {
     int i,j;
     for(i=100;i<=200;i++){
         j=2;
         while(j<i&&i%j!=0) j++;// while  是先判断再执行 
        if(i==j) 
        cout<<i<<' '; 
     }
     return 0;

你的代码修正如下:


#include <iostream>
#include <cmath>
using namespace std;
int main() 
{
    for (int i = 100; i <= 200; ++i) 
    {
        double sqrti = sqrt(i * 1.0);
        int count = 0;
        for (int j = 2; j <= sqrti; ++j)
        {
            if (i % j == 0) {
                count++;
            }
        }
        if (count == 0)
            cout << i<<"\n";
    }return 0;
}


#include <iostream>

#include <cmath>

using namespace std;

int main(){
    for(int i=100;i<=200;++i){
        //打了一个标签,用来判断当前范围是否有素数,如果flag变成1就不是素数,如果flag不变还是0就说明是素数
        int flag = 0;
        double sqrti = sqrt(i);
        for(int j=2;j<=sqrti;++j) {   
            // 如果能被整除,说明不是素数
            if(i%j==0){
                flag = 1;
                break;
            }    
        }
        if (flag == 0) {
            cout << i << "\n";
        }
    }
    return 0 ;
}