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… 处获得。