aboutsummaryrefslogtreecommitdiff
path: root/challenge-041/stuart-little/lua/ch-1.lua
blob: 3f0f2ec97a02e563462ac26e4b53aea39d4218b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env lua

-- run <script> <number of attractive numbers to see>

function isPrime(n)
   if n<2 then return false end
   for d=2,math.sqrt(n) do
      if n%d==0 then return false end
   end
   return true
end

function prFact(n)
   local factStr=io.popen(("factor %d"):format(n)):read():match(":%s+(.*)")
   local facts={}
   for fact in factStr:gmatch("(%S+)") do
      table.insert(facts,tonumber(fact))
   end
   return facts
end

function isAtt(n)
   return isPrime(#(prFact(n)))
end

local run,nr=2,0
while nr<tonumber(arg[1]) do
   if isAtt(run) then
      print(run)
      nr=nr+1
   end
   run=run+1
end