质数

Login to join training plan

[视频讲解](https://www.yuque.com/benyao-60fk1/axxvmq/ir0uup8ea973z27l?singleDoc# 《判断质数》)

这是一道判断质数的题。质数是大于 1 的自然数,除了 1 和它自身外,没有其他因数。我们要编写程序判断输入的 2 到 1000000 之间的整数是否为质数,若是则输出 “Yes”,否则输出 “No”。

解题步骤如下:

  1. 输入要判断的数 n,就像去超市要先明确买什么东西一样,这里就是明确要判断的对象。
  2. 从 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),另一个因数必然小于平方根,所以试到平方根就能涵盖所有可能的因数。
  3. 根据判断结果输出 “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;
}

Section 1. 质数

Open

Problem Tried AC Difficulty
602   判断质数 51 39 1
603   统计区间内质数个数 105 34 1

Section 2. 质数2

Open

Problem Tried AC Difficulty
726   判断质数1(1) 32 7 8
727   奇偶性(0.5) 13 3 9
728   奇妙素数1 0 0 (None)
729   奇妙素数2 0 0 (None)
730   奇妙素数3 0 0 (None)
 
Enrollees
41
Created By