#!/usr/bin/env luajit local primes = require 'primes' local arrr = require 'arrr' local parser = arrr { { "Enable batch factorization", "--batch", "-b" }; { "Initialize prime table up to the Nth prime", "--initialize", "-n", "n", tonumber }; { "Cache file", "--cache", "-c", 1, io.open }; } local options = parser {...} if options.cache then local i = 1 for line in options.cache:lines() do primes[i] = tonumber(line) i = i + 1 end end if options.initialize then for i=1, options.initialize do local _ = primes[i] end end if not options.batch then local number = options[1] and tonumber(options[1]) if not number then io.write("Please input a number: ") number = assert(tonumber(io.read())) -- Try 351681238432 ;) end for i, factor in ipairs{primes:factorize(number)} do print(factor) end else for number in io.lines() do number = assert(tonumber(number)) print(number.." = "..table.concat({primes:factorize(number)}, " + ")) end end