检查一个数是否为质数的 C++程序
使用 for
循环和 if...else
语句检查整数(由用户输入)是否为质数的示例。
要理解此示例,您应该具备以下 C++ 编程 主题的知识:
一个只能被 1 和它本身整除的正整数称为质数。
例如:13 是质数,因为它只能被 1 和 13 整除;但 15 不是质数,因为它可以被 1、3、5 和 15 整除。
注意: 0 和 1 不是质数。
示例:检查质数
#include <iostream>
using namespace std;
int main() {
int i, n;
bool isPrime = true;
cout << "Enter a positive integer: ";
cin >> n;
// 0 and 1 are not prime numbers
if (n == 0 || n == 1) {
isPrime = false;
}
else {
for (i = 2; i <= n / 2; ++i) {
if (n % i == 0) {
isPrime = false;
break;
}
}
}
if (isPrime)
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
中.
注意布尔变量 isPrime
在程序开始时初始化为 true
。
由于 0 和 1 不是质数,我们首先检查输入的数字是否是这些数字之一。如果输入数字是 0 或 1,则 isPrime
设置为 false
。
否则,初始值 isPrime
保持不变并执行 for
循环,它检查用户输入的数字是否可以完全被 i
整除。
for (i = 2; i <= n / 2; ++i) {
if (n % i == 0) {
isPrime = false;
break;
}
}
该 for
循环从运行 i == 2
到 i <= n / 2
和增加值 i
每次迭代减 1。
循环终止于 i == n / 2
因为 n
的任何因子都不会超过 n / 2
。因此,任何超出的迭代 n / 2
都是多余的。
如果用户输入的数字可以被完全整除 i
, 然后 是质数设置为 false
并且该数字将不是质数。
但是如果在整个循环中输入的数字不能完全被 i
整除,这意味着输入数字只能被 1 和该数字本身整除。
所以,给定的数是质数。
在 n == 2
和 n == 3
的情况下, for
循环无法运行并且 的值是质数仍然 true
。