Arbitrary precision integers in factor
This commit is contained in:
parent
083fe00372
commit
530e740de0
2 changed files with 9 additions and 6 deletions
14
factor.nim
14
factor.nim
|
|
@ -1,19 +1,21 @@
|
||||||
import cligen, sequtils
|
import cligen, sequtils, stint
|
||||||
import common
|
import common
|
||||||
|
|
||||||
proc factor(num:int):seq[int] =
|
proc factor(num:StUint[64]):seq[StUint[64]] =
|
||||||
result = @[]
|
result = @[]
|
||||||
var i = num
|
var i = num
|
||||||
while i > 1:
|
while i > 1:
|
||||||
for x in 2..i:
|
var x = 2.stuint(64)
|
||||||
|
while x <= i:
|
||||||
if i mod x == 0:
|
if i mod x == 0:
|
||||||
result.add(x)
|
result.add(x)
|
||||||
i = i div x
|
i = i div x
|
||||||
break
|
break
|
||||||
|
else: x += 1.stuint(64)
|
||||||
|
|
||||||
proc main(integers:seq[int]) =
|
proc main(numbers:seq[string]) =
|
||||||
for number in integers:
|
for number in numbers:
|
||||||
echo number, ": ",
|
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)
|
dispatch(main)
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ license = "Unlicense"
|
||||||
|
|
||||||
requires "nim >= 0.19.0"
|
requires "nim >= 0.19.0"
|
||||||
requires "cligen >= 0.9.19"
|
requires "cligen >= 0.9.19"
|
||||||
|
requires "stint >= 0.0.1"
|
||||||
|
|
||||||
bin = @["add", "cat", "echo", "factor", "false", "mul", "seq", "sleep", "sub", "true", "yes"]
|
bin = @["add", "cat", "echo", "factor", "false", "mul", "seq", "sleep", "sub", "true", "yes"]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue