【发布时间】:2021-07-02 07:46:35
【问题描述】:
我已经用 C++ 编码超过一天了,我目前正被这个特殊问题所困扰。我想输入一个整数并生成小于给定整数的每个素数,但输出总是有非素数的随机数。代码如下:
#include <iostream>
#include <math.h>
using namespace std;
int check(int x){
bool prime = true;
if (x <= 1){
prime = false;
return 0;
}
for (int i = 2; i < x; i++){
if (x % i == 0){
prime = false;
return 0;
}
}
if (prime = true){
return x;
}
}
int main(){
int r;
cout << "Enter range: ";
cin >> r;
int primes[r];
int n = 0;
for (int i = 0; i < r; i++){
if (check(i) != 0){
primes[n] = i;
n++;
}
else{
}
}
for (int i : primes){
cout << i << endl;
}
}
帮我解决这个问题。谢谢。
【问题讨论】:
-
很高兴您在问题中包含了完整的示例代码,但您能否也包含一个示例输入,以及实际输出和您期望的输出。
-
if (prime = true)是赋值,而不是比较 -
@dave true,但最后一个块也可以是
return x;,因为此时prime始终是true并且prime=true的计算结果为true -
添加注释:不要使用
using namespace std。标准 C++ 不支持 VLA。而且它们在 c 中也有些危险。 -
从技术上讲,您的程序根本不需要数组
primes。只需打印找到的素数即可。