From 530e740de037685427dd2deca8a2024a7d7fe002 Mon Sep 17 00:00:00 2001 From: joachimschmidt557 Date: Mon, 11 Mar 2019 19:49:36 +0100 Subject: [PATCH] Arbitrary precision integers in factor --- factor.nim | 14 ++++++++------ nimbase.nimble | 1 + 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/factor.nim b/factor.nim index 7ac4fd7..07fa23e 100644 --- a/factor.nim +++ b/factor.nim @@ -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) diff --git a/nimbase.nimble b/nimbase.nimble index e50fb9d..9ba5bb8 100644 --- a/nimbase.nimble +++ b/nimbase.nimble @@ -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"]