跳到主要内容

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 << "输入一个正整数:";
cin >> n;

// 0 和 1 不是素数
if (n == 0 || n == 1) {
is_prime = false;
}

// 循环检查 n 是否是素数
for (i = 2; i <= n/2; ++i) {
if (n % i == 0) {
is_prime = false;
break;
}
}

if (is_prime)
cout << n << " 是一个素数";
else
cout << n << " 不是一个素数";

return 0;
}

输出

输入一个正整数:29
29 是一个素数。

这个程序从用户那里获取一个正整数,并将其存储在变量 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 的任何因子超过数字 n/2。所以,超过 n/2 的任何迭代都是多余的。

如果用户输入的数字可以完美地被 i 整除,那么 is_prime 将被设置为 false,该数字将不是素数。

但如果在整个循环中输入的数字都不是完美地被 i 整除,那么意味着输入的数字只能被 1 和该数字本身整除。

所以,给定的数字是一个素数。

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