在两个数字之间找到质数的问题

问题描述

我必须找到两个给定数字之间的所有质数(以升序排列,即小,大),我进行了逻辑运算,以使我的程序从给定的最小数开始,一直到给定的最大数,并找出介于两者之间的每个数的因数,如果因子计数为2即1及其本身(这是质数的条件),则将其打印为质数。但是我无法打印所需的输出。无法追踪原因(请问我是19岁的编程新手)

#include <iostream>
using namespace std;
int main(){
        int start,end;
        cin>>start,end;
        for(int i=start+1;i<end;++i){
                int count;
                for(int j=1;j<=i;++j){
                        if(i%j==0 || i/2==0)count++;
                }
                if(count==2) cout<<i<<endl;

        }

        return 0;
}

输入:1 10

预期输出

2
3 
5 
7 
9

输出:(无)

解决方法

您的程序有几个问题。

  1. cin>>start,end;不会读取2个数字。您需要cin >> start >> end;

  2. 您没有将count初始化为任何内容,因此在执行count++时会调用未定义的行为。您需要做int count = 0;

此外,在检查n是否为质数时,您无需通过1n检查可除性,因为这始终是正确的。