fork download
  1. function isPrime(n) {
  2. if (isNaN(n) || !isFinite(n) || n % 1 || n < 2) {
  3. return false;
  4. }
  5. if (n % 2 === 0) return n === 2;
  6. if (n % 3 === 0) return n === 3;
  7. if (n % 5 === 0) return n === 5;
  8. const m = Math.sqrt(n);
  9. for (let i = 7; i <= m; i += 30) {
  10. if (n % i === 0) return i === n;
  11. if (n % (i + 4) === 0) return i + 4 === n;
  12. if (n % (i + 6) === 0) return i + 6 === n;
  13. if (n % (i + 10) === 0) return i + 10 === n;
  14. if (n % (i + 12) === 0) return i + 12 === n;
  15. if (n % (i + 16) === 0) return i + 16 === n;
  16. if (n % (i + 22) === 0) return i + 22 === n;
  17. if (n % (i + 24) === 0) return i + 24 === n;
  18. }
  19. return true;
  20. }
  21.  
  22. function* generatePrimes(n) {
  23. for (let i = 0; i < n; i++) {
  24. if (isPrime(i)) {
  25. yield i;
  26. }
  27. }
  28. }
  29.  
  30. (function test() {
  31. const p = generatePrimes(100);
  32. do {
  33. a = p.next();
  34. if(!a.done) {
  35. console.log(a.value);
  36. }
  37. } while(!a.done);
  38. })();
  39.  
Success #stdin #stdout 0.03s 16896KB
stdin
Standard input is empty
stdout
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97