From 698701329064518725c959eece4cb4ac93665ce9 Mon Sep 17 00:00:00 2001 From: ikselven Date: Fri, 17 Mar 2017 08:35:24 +0100 Subject: [PATCH] ikselven's solution for Project Euler problem 37 and 87 --- 2017-03-07/ikselven_euler37.js | 69 ++++++++++++++++++++++++++++++++++ 2017-03-14/ikselven_euler87.js | 46 +++++++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100755 2017-03-07/ikselven_euler37.js create mode 100755 2017-03-14/ikselven_euler87.js diff --git a/2017-03-07/ikselven_euler37.js b/2017-03-07/ikselven_euler37.js new file mode 100755 index 0000000..aadd245 --- /dev/null +++ b/2017-03-07/ikselven_euler37.js @@ -0,0 +1,69 @@ +#!/usr/bin/js24 + +function isPrime(num) { + if (num === 3) { + return true; + } + + if (num % 2 === 0) { + return false; + } + + for (let i = 3; i <= Math.sqrt(num); i++) { + if (num % i === 0) { + return false; + } + } + return true; +} + +function findNextPrime(num) { + while(!isPrime(++num)) { + } + return num; +} + +function rightTruncatable(num, pset) { + while (num > 9) { + num = Math.floor(num/10); + if (!pset.has(num)){ + return false; + } + } + return true; +} + +function leftTruncatable(num, pset) { + while (num > 9) { + exp = Math.pow(10, Math.floor(Math.log(num) / Math.log(10))); + num -= Math.floor(num / exp) * exp; + if (!pset.has(num)) { + return false; + } + } + return true; +} + +let num = 7; +let pset = new Set([2,3,5,7]); +let tset = new Set(); + +while(tset.size < 11) { + num = findNextPrime(num); + putstr('\rChecking '+num); + pset.add(num); + if (rightTruncatable(num, pset) && leftTruncatable(num, pset)) { + tset.add(num); + print('\r'+num+' '); + } +} + +print("Found 11 numbers, summing up."); + +let sum = 0; +for (let number of tset) { + print(number); + sum += number; +} + +print(sum); diff --git a/2017-03-14/ikselven_euler87.js b/2017-03-14/ikselven_euler87.js new file mode 100755 index 0000000..b817aeb --- /dev/null +++ b/2017-03-14/ikselven_euler87.js @@ -0,0 +1,46 @@ +#!/usr/bin/js24 + +function isPrime(num) { + if (num === 3) { + return true; + } + + if (num % 2 === 0) { + return false; + } + + for (let i = 3; i <= Math.sqrt(num); i++) { + if (num % i === 0) { + return false; + } + } + return true; +} + +const MAX = 5e7; +let primes = [2, 3, 5, 7]; + +for(let i=10; i= MAX) { + break; + } + sumSet.add(sum); + } + } +} + +print("found "+sumSet.size+" numbers");