我试图在本节找到一个质数
I'm trying to find a prime number at this section
本文关键字:一个 更新时间:2023-10-16
要求用户输入一个从 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 << " ";
}
}
}
}
它打印 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 之间的每个素数
这不是你所做的,你必须检查所有的模数都不是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
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 预处理器:插入结构名称中的前一个行号
- 我在c++代码中生成了一个运行时#3异常
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 从链接列表c++中删除一个项目
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '