aboutsummaryrefslogtreecommitdiff
path: root/challenge-133/abigail/node
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-11-05 20:58:51 +0100
committerAbigail <abigail@abigail.be>2021-11-05 20:58:51 +0100
commita0298e354570ba3ebf90abaeaf9f2af3b58702e7 (patch)
treeb0aaf38d1443e4d6cf21dd5dc476a5fa2c65e974 /challenge-133/abigail/node
parent62496f0a55d58841ca5b56cc386a329285d8e35d (diff)
downloadperlweeklychallenge-club-a0298e354570ba3ebf90abaeaf9f2af3b58702e7.tar.gz
perlweeklychallenge-club-a0298e354570ba3ebf90abaeaf9f2af3b58702e7.tar.bz2
perlweeklychallenge-club-a0298e354570ba3ebf90abaeaf9f2af3b58702e7.zip
AWK, Bash, Lua, Node.js, Python and Ruby solutions for week 133, part 2.
Diffstat (limited to 'challenge-133/abigail/node')
-rw-r--r--challenge-133/abigail/node/ch-2.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/challenge-133/abigail/node/ch-2.js b/challenge-133/abigail/node/ch-2.js
new file mode 100644
index 0000000000..1000e451d7
--- /dev/null
+++ b/challenge-133/abigail/node/ch-2.js
@@ -0,0 +1,52 @@
+#!/usr/local/bin/node
+
+//
+// See ../README.md
+//
+
+//
+// Run as: node ch-2.js < input-file
+//
+
+let small_primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
+
+function factorize (num) {
+ let out = []
+ small_primes . forEach (prime => {
+ while (num % prime == 0) {
+ out . push (prime)
+ num /= prime
+ }
+ })
+
+ if (num > 1) {
+ out . push (num)
+ }
+
+ return out
+}
+
+
+function digit_sum (numbers) {
+ let sum = 0
+ numbers . forEach (number => {
+ while (number > 0) {
+ sum += number % 10
+ number = Math . floor (number / 10)
+ }
+ })
+ return sum
+}
+
+
+let count = 0
+let number = 1
+
+while (count < 10) {
+ let factors = factorize (number)
+ if (factors . length > 1 && digit_sum ([number]) == digit_sum (factors)) {
+ console . log (number)
+ count ++
+ }
+ number ++
+}