只能被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
循环,检查用户输入的数字是否可以被
整除我与否。
for (i = 2; i <= n / 2; ++i) { if (n % i == 0) { isPrime = false; break; } }
for
循环从
i == 2
运行到
i <= n/2
并增加
i
<的值 var>
每次迭代增加 1、
的值>
循环在
i == n/2
处终止,因为除了
n/2
数字之外,我们找不到
n 的任何因子。因此,任何超出
n/2
的迭代都是多余的。
如果用户输入的数字可以被
i 整除,则
isPrime 设置为
false
并且该数字将不是一个质数。
但是如果在整个循环中输入数字不能被
i 完全整除,那么这意味着输入数字只能被 1 和该数字本身整除。
所以,给定的数是质数。
在
n == 2
的情况下,
for
循环运行失败,
isPrime 的值保持
true。