Last active
June 14, 2017 13:46
-
-
Save wowdyaln/885671196de05f3cbc1730b8564a09f3 to your computer and use it in GitHub Desktop.
function howmanyPrime in js and ruby
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
變數: | |
dividend(被除數): 從 3 開始 .. 到 (某數) | |
divisor(除數):從 2 開始 .. 到 (某數-1) | |
變數代號: | |
dividend# => dd | |
divisor# => dr | |
邏輯 圍繞在 dd % dr 這個數學式 | |
- 如果整除 # => 跳出,dr加1 ,繼續 | |
- 如果不整除 # => dd加1 ,繼續 | |
- 如果不整除 而且 (dr+1) == dd | |
dd 是一個質數,把它記錄下來 | |
*/ | |
//version 1 | |
function howmanyPrime(number){ | |
var output = []; | |
for (var dd=3; dd<= number; dd++){ //2是質數,此函數會忽略 | |
for (var dr=2; dr < dd; dr++){ | |
if (dd % dr == 0) | |
break; | |
else if (dr+1 == dd) | |
output.push(dd); | |
continue; | |
} | |
} | |
return output; | |
} | |
// intern_A | |
var flag = 0; | |
function howmanyPrime(number) { | |
var output = []; | |
for (var dd = 3; dd <= number; dd++) { //2是質數,此函數會忽略 | |
var flag = 0; | |
for (var dr = 2; dr < dd; dr++) { | |
if (dd % dr == 0){ | |
flag = 1; | |
break; | |
} | |
} | |
if (flag==0) | |
output.push(dd); | |
} | |
return output; | |
} | |
// intern_B | |
function howmanyPrime(number) { | |
var output = []; | |
for (var dd = 0; dd <= number; dd++) { | |
if (isPrime(dd)) { | |
output.push(dd); | |
} | |
} | |
return output; | |
} | |
function isPrime(n) { | |
if (n === 1) { | |
return false | |
} | |
if (n === 2) { | |
return true | |
} | |
if (n % 2 === 0) { | |
return false | |
} | |
for (var i = 3; i <= Math.sqrt(n); i = i + 2) { | |
if (!isPrime(i)) { | |
continue | |
} | |
if (n % i === 0) { | |
return false | |
} | |
} | |
return true | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#version_1 | |
def howmanyPrime(number) | |
dd = 3 | |
dr = 2 | |
output = [] | |
for dd in 3..number | |
for dr in 2..(number-1) | |
if dd%dr == 0 | |
break | |
elsif dr+1 == dd | |
output.push(dd) | |
next | |
end | |
end | |
end | |
return output | |
end | |
require 'benchmark' | |
Benchmark.bm do |x| | |
x.report do | |
howmanyPrime(100000) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment