我使用此代码来检测密码,其算法检查数字是否为质数和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位素数,它总是说它是错的。
发布于 2021-04-24 04:00:58
您可以这样做:并且必须使用以下命令将该值转换为一个数字:
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...as,它既不是素数,也不是复合数。
发布于 2021-04-24 04:04:41
我会采用模块化的方法,将测试分成两个功能。一个用于测试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.");
}
https://stackoverflow.com/questions/67236063
复制相似问题