在 ML 中,我想得到一个数字的主要除数。我该怎么做,我是初学者。
问问题
1334 次
2 回答
2
使用简单的试除法,它以 开始p=2
并重复除以n
,并随着它的进行p
递增p
。
open LargeInt (* if you want to work with huge numbers like 5000000000 *)
infix 7 quot rem
val prime_factors =
let fun trial_division p n =
if p > n then nil else
if n rem p = 0
then p :: trial_division p (n quot p)
else trial_division (p + 1) n
in trial_division 2 end
于 2009-06-26T21:15:09.113 回答
1
有几种通用算法可以找到整数的主要除数:参见wikipedia。带有简单素性检验的试除法是最容易理解的。
在伪代码中查找或设计算法;只有这样才担心如何将其放入 ML 中。
于 2009-05-18T10:18:50.030 回答