一个正整数,只能被 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
。
由于 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/2
之后找不到 n 的任何因子。因此,超过 n/2
的任何迭代都是多余的。
如果用户输入的数字能被 i 整除,则 is_prime 被设置为 false
,该数字将不是质数。
但是,如果输入的数字在整个循环中都不能被 i 整除,则意味着输入的数字只能被 1 和它本身整除。
所以,给定的数字是质数。
在 n == 2
和 n == 3
的情况下,for
循环无法运行,is_prime 的值保持 true
。
另请阅读