Skip to content

Instantly share code, notes, and snippets.

@wowdyaln
Last active June 14, 2017 13:46
Show Gist options
  • Save wowdyaln/885671196de05f3cbc1730b8564a09f3 to your computer and use it in GitHub Desktop.
Save wowdyaln/885671196de05f3cbc1730b8564a09f3 to your computer and use it in GitHub Desktop.
function howmanyPrime in js and ruby
/*
變數:
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
}
#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