【发布时间】:2025-12-05 20:05:02
【问题描述】:
我正在尝试创建一个提示用户输入的程序。从该输入中,我应该打印所有小于和等于该值的素数。我真的很难做到这一点。
我知道我需要从 2 循环到数字。 了解我所缺少的。这是我到目前为止的代码(全部在 main 内),当输入为 5 时,输出为 1 1,这是错误的。我想要发生的事情(示例):如果输入是 13,那么输出应该是 2 3 5 7 11 13。
int i = 0;
int getNumber = 0;
cin >> getNumber;
for (i = 2; i <= getNumber; i++){
if (getNumber % i == 0){
prime = false;
}else{
prime = true;
}
if (prime == true){
cout << i << " " << endl;}
}
【问题讨论】:
-
您的代码在初始化之前似乎使用了
j。 -
您能用伪代码解释一下您的主要验证算法是什么吗?考虑一下,如果您将代码设计为使用函数
isPrime(int number),您将如何在循环中使用它?该循环会迭代什么? -
您的代码似乎也打印了变量
prime,您在 cmets 中已注意到该变量是一个布尔值。您的问题描述说您应该打印int。 -
您确定要检查素数吗?假设
getNumber等于 57,并且在循环的第三次迭代中,i是 4。那么i不会除以 57。结果你会转到prime = true分支,即使 4 肯定是 not 素数。
标签: c++