Arbitrary precision integers in factor

This commit is contained in:
joachimschmidt557 2019-03-11 19:49:36 +01:00
parent 083fe00372
commit 530e740de0
2 changed files with 9 additions and 6 deletions

View file

@ -1,19 +1,21 @@
import cligen, sequtils
import cligen, sequtils, stint
import common
proc factor(num:int):seq[int] =
proc factor(num:StUint[64]):seq[StUint[64]] =
result = @[]
var i = num
while i > 1:
for x in 2..i:
var x = 2.stuint(64)
while x <= i:
if i mod x == 0:
result.add(x)
i = i div x
break
else: x += 1.stuint(64)
proc main(integers:seq[int]) =
for number in integers:
proc main(numbers:seq[string]) =
for number in numbers:
echo number, ": ",
map(factor(number), proc(x:int):string = $x & " ").foldl(a & b)
map(factor(number.parse(StUint[64])), proc(x:StUint[64]):string = $x & " ").foldl(a & b)
dispatch(main)

View file

@ -6,6 +6,7 @@ license = "Unlicense"
requires "nim >= 0.19.0"
requires "cligen >= 0.9.19"
requires "stint >= 0.0.1"
bin = @["add", "cat", "echo", "factor", "false", "mul", "seq", "sleep", "sub", "true", "yes"]