什么是质数?用C++编程:判断一个数是不是质数?
作者:野牛程序员:2023-03-26 14:23:16数学阅读 2540
质数是指只能被1和自身整除的正整数。例如,2、3、5、7、11等都是质数。
我们在判断一个数是否为质数时,只需要遍历从2到sqrt(num)之间的所有数字即可。
以下是使用C++编程判断一个数是否为质数的代码:
#include <iostream> #include <cmath> using namespace std; int main() { int num, i; bool isPrime = true; cout << "输入一个整数: "; cin >> num; if (num == 1) { cout << num << "是质数." << endl; return 0; } for (i = 2; i <= sqrt(num); i++) { if (num % i == 0) { isPrime = false; break; } } if (isPrime) cout << num << " 是质数." << endl; else cout << num << " 不是质数." << endl; return 0; }
在判断一个数是否为质数时,只需要遍历从2到sqrt(num)之间的所有数字即可,原因如下:
假设num不是质数,那么它必定有一个大于1且小于等于num的平方根的因子p。因为如果p大于num的平方根,则另一个因子q必定小于num的平方根,与前提条件矛盾;同理,如果p小于num的平方根,则另一个因子q必定大于num的平方根,也与前提条件矛盾。因此,如果num不是质数,它的因子要么小于等于num的平方根,要么大于num的平方根。
根据这个结论,我们可以只遍历从2到sqrt(num)之间的所有数字,就能够确定num是否为质数。如果num不能被这些数字整除,则num是质数。否则,num不是质数。
此外,只需要遍历从2到sqrt(num)之间的所有数字,就能够避免重复检查因子。例如,如果num能够被4整除,那么它也能够被2整除。因此,在判断num能否被2整除之后,就不需要再判断num能否被4整除。
因此,使用从2到sqrt(num)之间的遍历方式可以有效地减少循环次数,从而提高代码的效率。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
- 上一篇:HTML做的夜空星星闪烁页面
- 下一篇:C++中的cout和printf详细介绍