介于 1 和 100 之间的质数列表
list of prime numbers between 1 and 100
我想找到质数列表,我尝试了这段代码,但它没有显示任何内容:
#include <iostream>
using namespace std;
int main()
{
int n, i;
std::cout << "Liste des nombres premiers : " << std::endl;
for (n = 1; n < 100; n++) {
for (i = 2; i < n; i++) {
if (n % i == 0)
std::cout << n << " ";
}
}
return 0;
}
我根本不喜欢你的代码。尝试这样做:创建一个函数来告诉你一个数字是否是素数,然后使用 for 循环遍历从 1 到 100 的所有数字,并用函数检查它们是否是素数。 这是一个易于记忆的函数(对于自然数(:
bool isPrime(int n)
{
if (n <= 1)
return 0;
if (n == 2)
return 1;
if (n%2 == 0)
return 0;
for (int i=3; i*i <= n; i+=2)
if (n%i == 0)
return 0;
return 1;
}
如果数字是素数,则此函数返回 1,如果不是,则返回 0。 这个想法是这样的:
如果 n 为 0 或 1,则它不是素数。
如果 n 为 2,则为素数。
如果 n 是 2 的倍数,但它不是 2,则它不是素数。
然后,你必须检查 n 是否有任何除数,直到你得到 n 的平方根 (i * i <= n(
更正程序错误:
- 将
n
的值初始化为2
。 - 并在
i
等于n
时打印,而不是在n % i
0
时打印。它应该是n % i == 0
然后打破。 - 将
i < n
更改为i <= n
。
尝试第一种方法(sqrt()
使用(:
#include <iostream>
#include <cmath>
int main(void)
{
for (int i = 2; i < 100; i++) {
if (i == 2 || i == 3) { // if number is 2 or 3, then prints it
std::cout << i << ' ';
}
for (int j = 2; j * j <= i; j++)
{
if (i % j == 0) break;
else if (j + 1 > sqrt(i)) std::cout << i << ' ';
}
}
return 0;
}
替代方法:
#include <iostream>
int main(void)
{
for (int n = 2; n < 100; n++)
for (int i = 2; i <= n; i++)
if (i == n) std::cout << i << ' ';
else if (n % i == 0) break;
return 0;
}
相关文章:
- Pybind11:将元组列表从Python传递到C++
- 从链接列表c++中删除一个项目
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++如何通过用户输入删除列表元素
- 读取文件的最后一行并输入到链接列表时出错
- 复制列表初始化的隐式转换的等级是多少
- LNK2038、MSVS2017 MAGMA的原因列表
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 没有为自己的结构调用列表推回方法
- 使用简单类型列表实现的指数编译时间.为什么
- 一对向量构造函数:初始值设定项列表与显式构造
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 通过for循环使用用户输入填充列表
- C++:如何使函数只返回作为列表一部分的字符串
- 概念中的cv限定符需要表达式参数列表
- 下面是我为检测链接列表中的循环而制作的代码
- 建议在运行时将带有类实例的列表从c++导入qml
- 如何维护资源管理器项目视图中当前可见的项目列表
- 在卡萨布兰卡形成编码参数的列表
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题