javascript - 使用 Java 脚本打印 1 到 100 之间的所有质数
问题描述
我最近开始学习 java-script。我创建了一个程序来检查一个数字是否是质数。但我想一次得到从 1 到 100 的所有素数,而不是单独检查每个数字。请告诉我如何完成它。(编辑)我希望它们出现在 html 页面上,而不是在控制台中
<!DOCTYPE html>
<html>
<head>
<title>
Check For Prime
</title>
<link rel="stylesheet" href="prime.css">
<script rel="text/javascript" src="prime.js"></script>
</head>
<body>
<div class="main">
<h1>Check for Prime</h1>
Enter Number : <input id="num"><br><br>
Number is : <input id="ans"><br><br>
<button id="bt1" onclick="check()">Check</button><br><br>
<button id="bt2" onclick="clr()">clear</button>
</div>
</body>
</html>
function check(){
var n = Number(document.getElementById("num").value);
var c = 0;
//for numbers 1 and 2
if(n == 1){
document.getElementById("ans").value = "Not Prime";
}
if(n == 2){
document.getElementById("ans").value = "Prime";
}
//for numbers other than 2
//increments c every time (x % n) is 0
for(x = 1 ; x <= n; x++){
if((n % x) == 0){
c = c + 1;
}
}
//for prime numbers c should be equal to two
//prime numbers have only two positive factors
if(c == 2){
document.getElementById("ans").value = " Prime ";
}
else{
document.getElementById("ans").value = "Not Prime";
}
}
//clear function
//clear input
function clr(){
document.getElementById("num").value = "";
document.getElementById("ans").value = " ";
}
解决方案
这是您无需单独检查即可获得素数的方法:
const isPrime = n => [...Array(n).keys()].slice(2).every(divisor => n % divisor !== 0)
const primeNumbers = [...Array(101).keys()].filter(isPrime)
console.log(primeNumbers)
推荐阅读
- swift - 将 Xib 的大小调整为 swift 4 的屏幕大小
- javascript - 如何在按钮单击的帮助下滚动 div
- css - 背景大小:封面在 Bootstrap 4 中不起作用
- angular7 - Angular 7 中的声明.d.ts
- ruby - `to_i` 方法以基值作为 ruby 中的参数
- linux - 如何在 Bash/Shell 中检测 GUI 的可用性?
- java - Hibernate 不会在双向映射中生成密钥
- php - 如何将具有相同属性的两个不同表的值组合起来
- google-cloud-platform - flink 的 Logrotation 不适用于 logrotate.d
- java - 在eclipse中创建maven项目的问题