15.每隔一秒打印小于N的素数

175 阅读2分钟

15.每隔一秒打印小于N的素数

create by db on 2021-4-11 15:37:48
Recently revised in 2021-4-11 15:52:28

闲时要有吃紧的心思,忙时要有悠闲的趣味

  • 掘金团队号上线,助你 Offer 临门! 点击 查看详情

目录

题目描述

返回目录

 输入N,程序执行后,每1秒钟,按顺序输出小于N的一个素数,直到输出完毕为止。

示例:

输入: 10

输出: 2 3 5 7

思路分析

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

 所以我们对于素数的主要判断依据就是能不能被除了1和它自身外的自然数整除,因此我们可以定义一个状态isPrim来判断当前数是非为素数;

 还有1点需要注意的是,我们需要每隔1s打印一个数字,这样就需要使用到定时器setTimeout,并且其时间参数需要累加1s才行.

AC 代码

/**
 * @param {number} n
 * @param {number[]} que2
 * @return {number[]}
 */
  // 打印素数
  function printPrime(n) {
    // 声明时间间隔初始值为1s
    let time = 1000
    // 素数不包括1,我们从2开始循环查找
    for (let i = 2; i < n; i++) {
      // 声明状态码判定是否为素数
      let isPrim = true
      for (let j = 2; j < i; j++) {
        // 判断i能否被j整除
        if (i % j === 0) {
          // 能被整除则说明不是素数,修改状态码为false
          isPrim = false
        }
      }
      // 当前s数为素数则打印
      if (isPrim) {
        // 定时器累加1s,保证每秒打印1个
        setTimeout(() => document.writeln(i), time += 1000)
      }
    }
  }

测试:

  printPrime(100)

总结

返回目录

 四月,芳菲未尽,鲜花盛开。加油!

后记:Hello 小伙伴们,如果觉得本文还不错,记得点个赞或者给个 star,你们的赞和 star 是我编写更多更丰富文章的动力!GitHub 地址

文档协议

知识共享许可协议
db 的文档库db 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于github.com/danygitgit上的作品创作。
本许可协议授权之外的使用权限可以从 creativecommons.org/licenses/by… 处获得。