Search code examples
javascriptprintinggetelementbyidperfect-numbers

Trying to print the right answer in Javascript using getElementById


I'm trying to find whether or a not a number is a perfect number, but I can't get it to print right. The numbers 6, 496, 8128 are perfect numbers but when I entered those it kept printing from var res2 instead of var res1. What's the problem here, can anyone can help?

function perfectNo(number) {
  var temp = 0;
  var res1 = "It is a perfect number";
  var res2 = "It is not a perfect number";
  for (var i = 1; i <= number / 2; i++) {
    if (number % i == 0) {
      temp += i;
    }
  }

  if (temp == number && temp != 0) {
    document.getElementById("results").innerHTML = res1;
  } else {
    document.getElementById("results").innerHTML = res2;
  }
}
<input id="num">
<input type="button" onclick="perfectNo()" value="check">
<br>
<p>Answer:</p>
<p id="results"></p>
<br>


Solution

  • Try with :

    var number = document.getElementById("num").value;
    

    Like this :

    function perfectNo() {
      var number = document.getElementById("num").value;
      console.log(number);
      var temp = 0;
      var res1 = "It is a perfect number";
      var res2 = "It is not a perfect number";
      for (var i = 1; i <= number / 2; i++) {
        if (number % i == 0) {
          temp += i;
        }
      }
    
      if (temp == number && temp != 0) {
        document.getElementById("results").innerHTML = res1;
      } else {
        document.getElementById("results").innerHTML = res2;
      }
    }
    <input id="num">
    <input type="button" onclick="perfectNo()" value="check">
    <br>
    <p>Answer:</p>
    <p id="results"></p>
    <br>