5

[JavaScript] Sieve of Eratosthenes

 2 years ago
source link: http://siongui.github.io/2018/04/28/javascript-sieve-of-eratosthenes/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

[JavaScript] Sieve of Eratosthenes

April 28, 2018

JavaScript implementation of Sieve of Eratosthenes. See from GeeksforGeeks [1]. The JavaScript code is ported from the C/C++ code of GeeksforGeeks.

Input Integer Greater Than 2:

Source Code (HTML):

Input Integer Greater Than 2: <input type="text" name="n"><br><br>
<button type="button" id="sieve">Run Sieve of Eratosthenes</button><br><br>
<textarea id="result" rows="20" cols="50"></textarea>

Source Code (JavaScript):

function SieveOfEratosthenes(n) {
      // Create a boolean array "prime[0..n]" and initialize
      // all entries it as true. A value in prime[i] will
      // finally be false if i is Not a prime, else true.
      var integers = [];
      for (var i = 2; i < n+1; i++) {
              integers[i] = true;
      }

      for (var p = 2; p*p <= n; p++) {
              // If integers[p] is not changed, then it is a prime
              if (integers[p] == true) {
                      // Update all multiples of p
                      for (var i = p * 2; i <= n; i += p) {
                              integers[i] = false;
                      }
              }
      }

      // return all prime numbers <= n
      var primes = [];
      for (var p = 2; p <= n; p++) {
              if (integers[p] == true) {
                      primes.push(p);
              }
      }

      return primes;
}

var elmn = document.querySelector("input[name='n']");
var btn = document.querySelector("#sieve");
var resultElm = document.querySelector("#result");
btn.addEventListener("click", function(e) {
  var n = parseInt(elmn.value);
  if (!Number.isInteger(n)) {
    resultElm.value = "input must be integer!";
    return;
  }
  if ( n<=2 ) {
    resultElm.value = "n must be greater than 2!";
    return;
  }
  result.value = SieveOfEratosthenes(n);
});

Tested on: Chromium 65.0.3325.181 on Ubuntu 17.10 (64-bit)


References:

[2][Golang] Sieve of Eratosthenes

[3]Online Lemoine’s Conjecture Demo


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK