问题描述
我必须找到两个给定数字之间的所有质数(以升序排列,即小,大),我进行了逻辑运算,以使我的程序从给定的最小数开始,一直到给定的最大数,并找出介于两者之间的每个数的因数,如果因子计数为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
输出:(无)
解决方法
您的程序有几个问题。
-
cin>>start,end;
不会读取2个数字。您需要cin >> start >> end;
-
您没有将
count
初始化为任何内容,因此在执行count++
时会调用未定义的行为。您需要做int count = 0;
此外,在检查n
是否为质数时,您无需通过1
或n
检查可除性,因为这始终是正确的。