介于 1 和 100 之间的质数列表

list of prime numbers between 1 and 100

本文关键字:数列 列表 之间 介于      更新时间:2023-10-16

我想找到质数列表,我尝试了这段代码,但它没有显示任何内容:

#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(

更正程序错误:

  1. n的值初始化为2
  2. 并在i等于n时打印,而不是在n % i0时打印。它应该是n % i == 0然后打破。
  3. 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;
}