[英]How to test if a number is prime and 9 digits long in JS
我有这个代码来检测密码,该算法检查数字是否为素数且长度为 9 位
function passwordIsGiven() { var password = document.getElementById("password").value; var passwordLength = password.length; for (let i = 0; i < password; i++) { if (password % i == 0) { isPrime = false; break; } } if (isPrime && passwordLength == 9) { window.alert("Correct"); window.location.replace("/html/index.html"); } else { window.alert("Wrong code. Try again."); } }
<p>ENTER PASSCODE TO CONTINUE</p> <input type="password" id="password"> <br><br> <button type="submit" id="passwordButton" onClick="passwordIsGiven()">Submit</button>
即使有一个正确的 9 位素数,它也总是说它是错误的。
您可以这样做:并且您必须使用以下方法将值转换为数字:
var password = Number(document.getElementById("password").value);
function passwordIsGiven() {
var password = document.getElementById("password").value;
var passwordLength = password.toString().length;
let isPrime = true;
for (let i = 2; i < password; i++) {
if (password % i == 0) {
isPrime = false;
break;
}
}
if (isPrime && passwordLength === 9) {
window.alert("Correct");
window.location.replace("/html/index.html");
} else {
window.alert("Wrong code. Try again.");
}
}
并且还要检查 num ===1...因为它既不是素数也不是合数。
我将 go 采用模块化方法并将测试拆分为两个 function。 一个测试 isPrime 案例,另一个测试长度。
const isPrime = num => { for(let i = 2; i < num; i++){ if(num % i === 0){ return false; } } return num > 1; } const is9digit = number => { return number.toString().length; } const isPasswordValid = number => is9digit(number) && isPrime(number); const testNumber = isPasswordValid(333); if (testNumber) { window.alert("Correct"); window.location.replace("/html/index.html"); } else { window.alert("Wrong code. Try again."); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.