要求用户输入一个从1到a的数字,然后如果用户输入1作为整数c。我应该找到介于1和a之间的每个素数。这样可以很好地编译,但是可以打印介于1和a之间的每个数字。
if (c == 0) {
for (int i = 1; i <= a; i++) {
cout << i << " ";
}
}
else {
for (int i = 2; i <= a; i++) {
for (int c = 1; c <= a; c++) {
if (i % c == 0) {
cout << i << " ";
}
}
}
}
答案 0 :(得分:0)
它打印1到a之间的每个数字。
在
for (int i = 2; i <= a; i++) { for (int c = 1; c <= a; c++) { if (i % c == 0) { cout << i << " "; } } }
c 的第一个值为1,并且对于所有非空数字i % 1
为0,因此您至少一次打印了从2到a的所有数字
c 也将为 i 值,因此您执行i % i
,当然模数再次为0,并且至少打印了第二次从2到a的所有数字
当然,在其他情况下,模数可以为0
要求用户输入一个从1到a的数字,然后如果用户输入1作为整数c
我不明白那句话,有些地方有误或遗漏
我应该找到1到a之间的每个素数
这不是您要做的,您必须检查所有模是否为 not 0,除了1和数字本身
可以(偷懒):
#include <iostream>
int main()
{
std::cout << "enter max number" << std::endl;
int a;
if (!(std::cin >> a) || (a < 1)) // even we know 1 is not a prime number
std::cerr << "invalid number" << std::endl;
else {
for (int i = 2; i <= a; ++i) {
int c;
for (c = i/2; c >= 2; --c) {
if (i % c == 0)
break;
}
if (c == 1)
// prime
std::cout << i << " is a prime number" << std::endl;
}
}
return 0;
}
编译和执行:
pi@raspberrypi:/tmp $ g++ -pedantic -Wall -Wextra m.cc
pi@raspberrypi:/tmp $ ./a.out
enter max number
25
2 is a prime number
3 is a prime number
5 is a prime number
7 is a prime number
11 is a prime number
13 is a prime number
17 is a prime number
19 is a prime number
23 is a prime number