Skip to content

面试速答(先看这里)

**一句话结论:**质数(或素数)是指只有1和它本身两个正因数的自然数。

60秒标准回答:

质数(或素数)是指只有1和它本身两个正因数的自然数。如3,他只能被1和3整除,所以他就是一个质数。4可以被2整除,所以他不是质数

要找出101-200之间的所有质数,最基本的方法是尝试将它除以比它小的所有自然数,如果能被除尽,则不是质数;否则,它就是一个质数。不过,实际上只需要检查到其平方根即可,因为如果n不是质数,则它必定有一个因子小于或等于sqrt(n)

假设n = 36,其平方根是6。36的因子包括:1, 2, 3, 4, 6, 9, 12, 18, 36

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**要找出101-200之间的所有质数,最基本的方法是尝试将它除以比它小的所有自然数,如果能被除尽,则不是质数;
  • **要点2:**假设n = 36,其平方根是6。
  • **要点3:**这段代码定义了一个isPrime方法,用于判断一个整数n是否为质数。

**记忆锚点:**isPrime → 最基本的方法 → sqrt → 在主方法 → main

易错提醒:

  • 注意到所有的因子对都至少有一个因子小于或等于 6 ( 36 的平方根)。

加分表达:

  • 要找出101-200之间的所有质数,最基本的方法是尝试将它除以比它小的所有自然数,如果能被除尽,则不是质数;
  • 不过,实际上只需要检查到其平方根即可,因为如果n不是质数,则它必定有一个因子小于或等于sqrt(n)。
  • 如果是质数,则输出这个数,并将质数的数量加1。

追问准备:

  • 围绕「isPrime」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「最基本的方法」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「sqrt」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

质数(或素数)是指只有1和它本身两个正因数的自然数。如3,他只能被1和3整除,所以他就是一个质数。4可以被2整除,所以他不是质数。

要找出101-200之间的所有质数,最基本的方法是尝试将它除以比它小的所有自然数,如果能被除尽,则不是质数;否则,它就是一个质数。不过,实际上只需要检查到其平方根即可,因为如果n不是质数,则它必定有一个因子小于或等于sqrt(n)。

> 假设n = 36,其平方根是6。36的因子包括:1, 2, 3, 4, 6, 9, 12, 18, 36。 > > - 因子对可以列为:(1, 36), (2, 18), (3, 12), (4, 9), (6, 6)。 > - 注意到所有的因子对都至少有一个因子小于或等于6(36的平方根)。 > - 对于任何大于6的数,如9,它的因子对是(4, 9),其中4小于6。

java
public class PrimeNumbers {

    public static void main(String[] args) {
        int count = 0; // 用于统计质数的数量
        for (int i = 101; i <= 200; i++) {
            if (isPrime(i)) {
                System.out.println(i); // 输出质数
                count++;
            }
        }
        System.out.println("Total prime numbers between 101 and 200: " + count);
    }

    public static boolean isPrime(int n) {
        // 0和1不是质数,小于0的数也不是质数
        if (n <= 1) {
            return false;
        }
        // 检查从2到n的平方根是否有因子
        for (int i = 2; i <= Math.sqrt(n); i++) {
            // 如果n能被i整除,说明n不是质数
            if (n % i == 0) {
                return false;
            }
        }
        // 如果没有找到任何因子,说明n是质数
        return true;
    }
}

这段代码定义了一个isPrime方法,用于判断一个整数n是否为质数。在主方法main中,我们遍历了101到200之间的所有数,对每个数调用isPrime方法进行检查。如果是质数,则输出这个数,并将质数的数量加1。最后,输出101-200之间质数的总数。