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
。
由于 0 和 1 不是素数,我们首先检查输入的数字是否为这些数字之一。如果输入的数字是 0 或 1,则将 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 == 2
和 n == 3
的情况下,for
循环无法运行,is_prime
的值保持为 true
。