C++ 判断质数:isPrime 函数详解
C++ 判断质数:isPrime 函数详解
这篇文章将带你理解一个用于判断一个数是否为质数的 C++ 函数 isPrime。我们将深入分析代码的每一部分,解释其背后的逻辑和功能。cppbool isPrime(int num) { if (num <= 1) { return false; }
for (int i = 2; i * i <= num; i++) { if (num % i == 0) { return false; } }
return true;}
代码解析
-
函数定义: -
bool isPrime(int num): 这段代码定义了一个名为isPrime的函数,它接受一个整数num作为输入,并返回一个布尔值 (true或false),表示输入的数是否为质数。 -
处理特殊情况: -
if (num <= 1) { return false; }: - 质数的定义是大于 1 的自然数。 因此,如果输入的num小于或等于 1,它就不是质数,函数会直接返回false。 -
循环查找因子: -
for (int i = 2; i * i <= num; i++) { ... }: - 这段代码使用一个for循环来遍历从 2 到num的平方根的所有整数。 - 循环条件优化: 注意,循环条件是i * i <= num,而不是i <= num。这是因为如果一个数num有大于其平方根的因子,那么它一定有一个小于等于其平方根的因子。例如,16 的因子有 1, 2, 4, 8, 16。 其中,4 是 16 的平方根,大于 4 的因子 8 和 16 都对应着小于 4 的因子 2 和 1。因此,只需要检查到num的平方根即可。 -
判断是否整除: -
if (num % i == 0) { return false; }: - 在循环的每次迭代中,代码使用取模运算符%来检查num是否能被i整除。 - 如果num能被i整除(余数为 0),则意味着num有一个除了 1 和自身之外的因子i,因此num不是质数,函数返回false。 -
返回结果: - 如果循环执行完毕,说明没有找到任何一个
i能整除num,这意味着num除了 1 和自身以外没有其他因子,因此num是质数,函数返回true。
总结
isPrime 函数提供了一种简单有效的方法来判断一个整数是否为质数。通过循环和取模运算,它能够快速地识别出非质数,并在没有找到其他因子时确定一个数为质数。
原文地址: https://www.cveoy.top/t/topic/cvHb 著作权归作者所有。请勿转载和采集!