繁体   English   中英

如何在JS中测试一个数字是否为素数且长度为9位

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM