https://projecteuler.net/problem=3
Pythonならこんな風に書きたいところです。
from itertools import count import sys def f(n: int) -> int: for p in count(2): if p * p > n: return n elif n % p == 0: return f(n//p) return n N = int(sys.argv[1]) print(f(N))
Mojoにはcountが無いので、rangeで代用しました。
import sys def f(n: Int) -> Int: for p in range(2, n+1): if p * p > n: return n elif n % p == 0: return f(n//p) return n fn main(): let args = sys.argv() try: let N = atol(args[1]) print(f(N)) except: pass