质数简介

  • 质数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。

  • 质数又称素数。一个大于 1 的自然数,除了 1 和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定 1 既不是质数也不是合数)

JS 版本

  • 基础版

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    // 开始计时器
    // console.time("test");

    // 打印2-100之间的数
    for (var i = 2; i <= 100; i++) {
    // 创建一个布尔值,用来保存结果,默认i是质数
    var flag = true;

    // 判断i是否是质数
    // 获取2-i之间的所有的数
    for (var j = 2; j <= i; j++) {
    if (i % j == 0) {
    // 如果进入判断则证明i不是质数
    flag = false;
    }
    }
    // 如果是质数,则打印i的值
    if (flag) {
    console.log(i);
    }
    }

    // 终止计时器
    //console.timeEnd("test");
  • 进阶版

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // 开始计时器
    // console.time("test");

    // 打印2-100之间的数
    for (var i = 2; i <= 100; i++) {
    // 创建一个布尔值,用来保存结果,默认i是质数
    var flag = true;

    // 判断i是否是质数
    // 获取2-i之间的所有的数
    for (var j = 2; j <= i; j++) {
    if (i % j == 0) {
    // 如果进入判断则证明i不是质数
    flag = false;
    break;
    }
    }
    // 如果是质数,则打印i的值
    if (flag) {
    console.log(i);
    }
    }

    // 终止计时器
    // console.timeEnd("test");
  • 优化版

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // 开始计时器
    // console.time("test");

    // 打印2-100之间的数
    for (var i = 2; i <= 100; i++) {
    // 创建一个布尔值,用来保存结果,默认i是质数
    var flag = true;

    // 判断i是否是质数
    // 获取2-i之间的所有的数
    for (var j = 2; j <= Math.sqrt(i); j++) {
    if (i % j == 0) {
    // 如果进入判断则证明i不是质数
    flag = false;
    break;
    }
    }
    // 如果是质数,则打印i的值
    if (flag) {
    console.log(i);
    }
    }

    // 终止计时器
    // console.timeEnd("test");

Python 版本

  • 方法一

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # import time

    # 计时开始
    # time_start = time.time()

    for i in range(2, 101):
    flag = True
    for j in range(2, int(i ** 0.5) + 1):
    if i % j == 0:
    flag = False
    break
    if flag:
    print(i, "是质数")

    # 结束计时
    # time_end = time.time()

    # print("所花费的时间为: ", time_end - time_start)
  • 方法二(Python 独有)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # import time

    # 计时开始
    # time_start = time.time()

    for i in range(2, 101):
    for j in range(2, int(i ** 0.5) + 1):
    if i % j == 0:
    break
    else:
    # for...else语句: 当循环里的break没有被执行的时候,就会执行else
    print(i, "是质数")

    # 结束计时
    # time_end = time.time()

    # print("所花费的时间为: ", time_end - time_start)

Java 版本

  • 基础版

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    public static void main(String[] args) {

    // 获取当前时间距离1970-01-01 00:00:00 的毫秒数
    // long start = System.currentTimeMillis();

    for (int i = 2; i <= 100; i++) {
    // 标识
    boolean isFlag = true;

    // 遍历100以内的自然数
    for (int j = 2; j < Math.sqrt(i); j++) {
    if (i % j == 0) {
    isFlag = false;
    }
    }

    if (isFlag == true) {
    System.out.println(i);
    }
    }

    // 获取当前时间距离1970-01-01 00:00:00 的毫秒数
    // long end = System.currentTimeMillis();

    // System.out.println("所花费的时间为: " + (end - start));
    }
  • 优化版

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    public static void main(String[] args) {

    // 获取当前时间距离1970-01-01 00:00:00 的毫秒数
    // long start = System.currentTimeMillis();

    for (int i = 2; i <= 100; i++) {
    // 标识
    boolean isFlag = true;

    // 遍历100以内的自然数
    for (int j = 2; j < Math.sqrt(i); j++) {
    if (i % j == 0) {
    isFlag = false;
    break;
    }
    }

    if (isFlag == true) {
    System.out.println(i);
    }

    }
    // 获取当前时间距离1970-01-01 00:00:00 的毫秒数
    // long end = System.currentTimeMillis();

    // System.out.println("所花费的时间为: " + (end - start));
    }