质数
Login to join training plan
[视频讲解](https://www.yuque.com/benyao-60fk1/axxvmq/ir0uup8ea973z27l?singleDoc# 《判断质数》)
这是一道判断质数的题。质数是大于 1 的自然数,除了 1 和它自身外,没有其他因数。我们要编写程序判断输入的 2 到 1000000 之间的整数是否为质数,若是则输出 “Yes”,否则输出 “No”。
解题步骤如下:
- 输入要判断的数 n,就像去超市要先明确买什么东西一样,这里就是明确要判断的对象。
- 从 2 开始,到 n 的平方根为止,逐个尝试能否整除 n。若能被其中一个数整除,说明 n 除了 1 和它本身还有其他因数,就不是质数。比如判断 9,2 不能整除 9,但 3 能整除 9,所以 9 不是质数;判断 7,2 和 3 都不能整除 7,且 7 的平方根约为 2 点多,试到 2 即可,说明 7 是质数。至于为什么试到平方根,以 16 为例,它的因数 2 和 8、4 和 4,若一个因数大于平方根(16 的平方根是 4),另一个因数必然小于平方根,所以试到平方根就能涵盖所有可能的因数。
- 根据判断结果输出 “Yes” 或 “No”。
对应的 C++ 代码如下:
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n; // 输入要判断的数
bool isPrime = true; // 先假设这个数是质数
for (int i = 2; i * i <= n; i++) { // 从 2 开始试到 n 的平方根
if (n % i == 0) { // 如果 n 能被 i 整除
isPrime = false; // 说明 n 不是质数
break; // 不用再试后面的数了
}
}
if (isPrime) { // 如果还是假设的质数
cout << "Yes" << endl; // 输出 "Yes"
} else {
cout << "No" << endl; // 不是质数就输出 "No"
}
return 0;
}
- Enrollees
- 41
- Created By