Prime Numbers JavaScript

后端 未结 11 1122
长发绾君心
长发绾君心 2020-12-08 11:47

Can someone please give me guidance on getting the primenumbers here? This is homework so I don\'t want the answer but some pointers would be greatly appreciated. It\'s real

相关标签:
11条回答
  • 2020-12-08 12:28

    Based on this page, this would be a method for determining if a number is a prime number:

    function isPrime(number) {
        let start = 2;
        const limit = Math.sqrt(number);
        while (start <= limit) {
            if (number % start++ < 1) return false;
        }
        return number > 1;
    }
    

    In node.js it takes about 250Ms for determining the prime numbers between 2 and 100.000.

    See also ...

    0 讨论(0)
  • 2020-12-08 12:29

    Do you want to know how to determine a number is prime or composite. This code make you understand easily. Input from a number 2.

    var p = prompt("Insert a number for check","");
    var x = " is a prime number";
    for(i=2; i<p; i++){
        if(p%i === 0){
            x = " is a composite number";
            break;
        }
    }
    alert(p+x);
    
    0 讨论(0)
  • 2020-12-08 12:37

    Try the below code. It checks if the number is prime and if it isn't it logs the number's lowest divisor. It is accurate for numbers with less than 17 digits (this theoretically would work for any number but the way JavaScript works means that this isn't true). You can try it out embedded into a website here: https://prime-number-checker-git-main.matt-destroyer.vercel.app/ Or in the snippet below.

    function check() {
        function checkIfPrime(number) {
            if (number < 1) {
                i = 'less than zero or the number you entered was zero';
                return false;
            } else if (number < 2) {
                i = 'itself only';
                return false;
            } else if (number < 4) {
                return true;
            } else if (number < 10) {
                if (number === 4) {
                    i = 2;
                    return false;
                } else if (number === 5) {
                    return true;
                } else if (number === 6) {
                    i = 2;
                    return false;
                } else if (number === 7) {
                    return true;
                } else if (number === 8) {
                    i = 2;
                    return false;
                } else if (number === 9) {
                    i = 3;
                    return false;
                } 
            } else if (number % 2 === 0) {
                i = 2;
                return false;
            } else if (number % 3 === 0) {
                i = 3;
                return false;
            } else if (number % 5 === 0) {
                i = 5;
                return false;
            } else if (number % 7 === 0) {
                i = 7;
                return false;
            } else {
                i = 4;
                while (i * i < number) {
                    if (number % i === 0) {
                        return false;
                    }
                    i += 2;
                }
                return true;
            }
        }
        let i = 0;
        let input = parseInt(prompt('Enter a number to check if it is prime:'));
        if (input < 0) {
            alert(input + ' is not a prime number. A prime number must be a positive integer.');
        } else if (input === "") {
            alert("You cannot check if 'BLANK' is prime.");
        } else if (input != Math.round(input)) {
            alert(input + ' is not a prime number. A prime number cannot be a decimal.');
        } else {
            let check = checkIfPrime(input);
            if (check === true) {
                alert(input + ' is a prime number.');
            } else {
                alert(input + ' is not a prime number. Its lowest divisor is ' + i + '.');
            }
        }
    }
    check();

    0 讨论(0)
  • 2020-12-08 12:40

    You should return a bool value and new function can be:

    function(n) {
        if(n === 1) { return false;}
        else if(n == 2) { return true;}
        else if(n == 3) { return true;}
        else { 
            for(i=Math.floor(Math.sqrt(n));i>=2;i--){
                //console.log(i);//maybe another var in here? 
                    if(n%i ==0 || n%2 ==0 || n%3 == 0) {return false;} 
            } 
            }
        return true;
    };
    

    In the OP, the control if(n%i !==0 && n%2 !==0 && n%3 !== 0) {return n;} was problematic because even if only single i satisfies this condition, the function returns the number as prime.

    0 讨论(0)
  • 2020-12-08 12:42

    There is a function that will return true if the number is prime and false if it is not:

    function isPrime(x){     
          d = x-1;
          while (d > 1){
            if ((x % d) == 0) return false;
            d--;
          }
          return true;
        }
    

    Checkout the demo: http://jsbin.com/velapabedi/1/

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>JS Bin</title>
      
      <script>
        function isPrime(x){     
          d = x-1;
          while (d > 1){
            if ((x % d) == 0) return false;
            d--;
          }
          return true;       
          
        }
        
        
        if (isPrime(41)){
          alert('Prime');
        }
        else{
          alert('Not Prime');
        }
      </script>
    </head>
    <body>
    
    </body>
    </html>

    0 讨论(0)
提交回复
热议问题