diff --git a/Makefile b/Makefile
index 1d64733b4e06a5a77f1f13b51f90eb47cf0b7cf8..c77f8b62e2ab9259b78c71d1c3721f1aef3e14d3 100644
--- a/Makefile
+++ b/Makefile
@@ -11,6 +11,8 @@ clean:
 
 test:
 	@ time -f "%C : %E seconds" ./a.out 100000 > /dev/null
-	@ time -f "%C : %E seconds"  ./prime.py 100000 > /dev/null
-	@ time -f "%C : %E seconds"  ./prime.lua 100000 > /dev/null
-	@ time -f "%C : %E seconds"  ./prime.php 100000 > /dev/null
+	@ time -f "%C : %E seconds" ./prime.py 100000 > /dev/null
+	@ time -f "%C : %E seconds" ./prime.lua 100000 > /dev/null
+	@ time -f "%C : %E seconds" ./prime.php 100000 > /dev/null
+	@ time -f "%C : %E seconds" ./prime.rb 100000 > /dev/null
+	@ time -f "%C : %E seconds" ./prime.js 100000 > /dev/null
diff --git a/prime.js b/prime.js
new file mode 100755
index 0000000000000000000000000000000000000000..2c2a35c6d25d2d87dd0000a326e94cee586fb3f6
--- /dev/null
+++ b/prime.js
@@ -0,0 +1,22 @@
+#!/usr/bin/env node --use_strict
+
+function isPrime(num) {
+  let num_sqr = Math.sqrt(num)
+
+  if(num_sqr % 1 == 0) return false
+
+  for(let i=2; i<num_sqr; i++) 
+    if(num % i == 0) return false
+
+  return true
+}
+
+var primes = []
+let i = 2
+
+while(primes.length < parseInt(process.argv[2])) {
+  if(isPrime(i)) primes.push(i)
+  i++
+}
+
+console.log(primes)
diff --git a/prime.rb b/prime.rb
new file mode 100755
index 0000000000000000000000000000000000000000..358647a82e39d1535ba1648e34c8189c7f6b1e49
--- /dev/null
+++ b/prime.rb
@@ -0,0 +1,23 @@
+#!/usr/bin/env ruby
+
+def isPrime(num)
+  num_sqr = Math.sqrt(num)
+
+  return false if num_sqr % 1 == 0
+
+  (2..num_sqr.to_i).each do |n|
+    return false if num % n == 0
+  end
+
+  return true
+end
+
+primes = []
+i = 2
+
+while primes.count < ARGV.first.to_i do
+  primes << i if isPrime(i)
+  i += 1
+end
+
+puts primes