aboutsummaryrefslogtreecommitdiff
path: root/challenge-133/abigail/lua/ch-2.lua
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-133/abigail/lua/ch-2.lua')
-rw-r--r--challenge-133/abigail/lua/ch-2.lua53
1 files changed, 53 insertions, 0 deletions
diff --git a/challenge-133/abigail/lua/ch-2.lua b/challenge-133/abigail/lua/ch-2.lua
new file mode 100644
index 0000000000..45120a21b3
--- /dev/null
+++ b/challenge-133/abigail/lua/ch-2.lua
@@ -0,0 +1,53 @@
+#!/opt/local/bin/lua
+
+--
+-- See ../README.md
+--
+
+--
+-- Run as: lua ch-2.lua
+--
+
+local small_primes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31}
+
+function factorize (num)
+ local out = {}
+ for _, prime in ipairs (small_primes) do
+ while num % prime == 0 do
+ table . insert (out, prime)
+ num = num / prime
+ end
+ end
+ if num > 1 then
+ table . insert (out, num)
+ end
+ return (out)
+end
+
+
+function digit_sum (numbers)
+ local sum = 0
+ for _, number in pairs (numbers) do
+ while number > 0 do
+ sum = sum + number % 10
+ number = math . floor (number / 10)
+ end
+ end
+ return (sum)
+end
+
+
+local number = 1
+local count = 0
+
+
+while count < 10 do
+ local factors = factorize (number)
+ if #factors > 1 then
+ if digit_sum ({number}) == digit_sum (factors) then
+ print (number)
+ count = count + 1
+ end
+ end
+ number = number + 1
+end