Advertisement
Guest User

Untitled

a guest
Aug 30th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. "use strict";
  2.  
  3. function primes_with_generator(start, max){
  4. // start: int ( start >= 2 )
  5. // max : int
  6. if ( start < 2 ) throw new Error("start > 2 | start == 2");
  7. var generator = function* (start, max){
  8. var n = start || 2;
  9. while ( n <= max ){
  10. yield n++;
  11. }
  12. };
  13. var isPrime = function (n){
  14. var _is_prime = true;
  15. for (let i=2; i<=Math.floor(Math.sqrt(n)); i++){
  16. if ( n % i == 0 ){
  17. _is_prime = false;
  18. break;
  19. }
  20. }
  21. return _is_prime;
  22. };
  23.  
  24. var gen = generator(start, max);
  25. var result = [];
  26.  
  27. while (true){
  28. let next = gen.next();
  29. if ( next.done ) break;
  30. let is_prime = isPrime(next.value);
  31. if ( is_prime ) result.push(next.value);
  32. }
  33. return result;
  34. }
  35.  
  36. function primes (n, max){
  37. // n : int ( n >= 2 )
  38. // max: int
  39. if ( n < 2 ) throw new Error("n > 2 | n == 2");
  40. var is_prime = true;
  41. // WARN: RangeError: Maximum call stack size exceeded
  42. for (let i=2; i<=Math.floor(Math.sqrt(n)); i++){
  43. if ( n % i == 0 ){
  44. is_prime = false;
  45. break;
  46. }
  47. }
  48.  
  49. var result;
  50. if ( n == max ) {
  51. result = is_prime ? [n] : [];
  52. } else {
  53. result = is_prime ? [n].concat(primes(n+1, max)) : primes(n+1, max);
  54. }
  55. return result;
  56. }
  57.  
  58. function test_primes_with_generator(){
  59. let start = 2;
  60. let max = 100;
  61. let result = primes_with_generator(start, max);
  62. console.log(JSON.stringify(result));
  63. }
  64. function test_primes(){
  65. let start = 2;
  66. let max = 10;
  67. let result = primes(start, max);
  68. console.log(JSON.stringify(result));
  69. }
  70.  
  71. function test(){
  72. test_primes();
  73. test_primes_with_generator();
  74. }
  75.  
  76. test();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement