summaryrefslogtreecommitdiffstats
path: root/012.lua
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2009-05-14 19:51:41 -0500
committerJesse Luehrs <doy@tozt.net>2009-05-14 19:51:41 -0500
commitc3ff98ee4aa79bcaa07c8a478e96539c2a512e73 (patch)
tree0b1a04ee7e5b05ec23dcfa274d4258f8acbcdf9d /012.lua
parent394121b98178246a0b1063e9104f8878cf2a17e5 (diff)
downloadprojecteuler-c3ff98ee4aa79bcaa07c8a478e96539c2a512e73.tar.gz
projecteuler-c3ff98ee4aa79bcaa07c8a478e96539c2a512e73.zip
rename files for better sorting
Diffstat (limited to '012.lua')
-rw-r--r--012.lua31
1 files changed, 31 insertions, 0 deletions
diff --git a/012.lua b/012.lua
new file mode 100644
index 0000000..7ef1c0d
--- /dev/null
+++ b/012.lua
@@ -0,0 +1,31 @@
+-- only valid when n > 1
+function num_factors(n)
+ local ret = 2
+ local test = 2
+ local limit = math.sqrt(n)
+ while test < limit do
+ if n % test == 0 then
+ ret = ret + 2
+ end
+ test = test + 1
+ end
+ if limit == math.floor(limit) then ret = ret + 1 end
+ return ret
+end
+
+generate_triangle = coroutine.wrap(function()
+ local num = 0
+ local add = 1
+ while true do
+ num = num + add
+ add = add + 1
+ coroutine.yield(num)
+ end
+end)
+
+while true do
+ local n = generate_triangle()
+ local nn = num_factors(n)
+ print(n .. ": " .. nn)
+ if nn > 500 then break end
+end