C++ 检查一个数是否为素数程序

要理解本示例,您应该了解以下 C++ 编程 主题


一个正整数,只能被 1 和它本身整除,称为质数。

例如:13 是一个质数,因为只能被 1 和 13 整除;但 15 不是质数,因为它能被 1、3、5 和 15 整除。

注意: 0 和 1 不是质数。


示例:检查质数

#include <iostream>
using namespace std;

int main() {

  int i, n;
  bool is_prime = true;

  cout << "Enter a positive integer: ";
  cin >> n;

  // 0 and 1 are not prime numbers
  if (n == 0 || n == 1) {
    is_prime = false;
  }

  // loop to check if n is prime
  for (i = 2; i <= n/2; ++i) {
    if (n % i == 0) {
      is_prime = false;
      break;
    }
  }

  if (is_prime)
    cout << n << " is a prime number";
  else
    cout << n << " is not a prime number";

  return 0;
}

输出

Enter a positive integer: 29
29 is a prime number

该程序从用户那里获取一个正整数,并将其存储在变量 n 中。

请注意,布尔变量 is_prime 在程序开始时初始化为 true

由于 01 不是质数,我们首先检查输入的数字是否是这些数字之一。如果输入的数字是 01,则 is_prime 的值被设置为 false

否则,is_prime 的初始值保持不变。然后,执行 for 循环,该循环检查用户输入的数字是否能被 i 整除。


for (i = 2; i <= n/2; ++i) {
  if (n % i == 0) {
    is_prime = false;
    break;
  }
}

for 循环从 i == 2 运行到 i <= n/2,并在每次迭代中将 i 的值增加 1

循环在 i == n/2 处终止,因为我们在数字 n/2 之后找不到 n 的任何因子。因此,超过 n/2 的任何迭代都是多余的。

如果用户输入的数字能被 i 整除,则 is_prime 被设置为 false,该数字将不是质数。

但是,如果输入的数字在整个循环中都不能被 i 整除,则意味着输入的数字只能被 1 和它本身整除。

所以,给定的数字是质数。

n == 2n == 3 的情况下,for 循环无法运行,is_prime 的值保持 true


另请阅读

在我们结束之前,让我们来检验一下你对这个例子的理解!你能解决下面的挑战吗?

挑战

编写一个函数来检查一个数字是否为素数。

  • 如果数字是质数,则返回 "It's a prime number"。否则,返回 "It's not a prime number"
  • 如果一个数只有两个不同的因子:1 和它本身,那么它就是质数。
  • 例如,如果 num = 7,则输出应为 "It's a prime number"
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战