【发布时间】:2009-05-18 10:04:06
【问题描述】:
在 ML 中,我想获得一个数字的主要除数。我是初学者,我该怎么做。
【问题讨论】:
标签: integer primes sml prime-factoring
在 ML 中,我想获得一个数字的主要除数。我是初学者,我该怎么做。
【问题讨论】:
标签: integer primes sml prime-factoring
使用简单的试除法,它以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
【讨论】:
有几种通用算法可以找到整数的素数:参见wikipedia。 Trial division 简单的素性测试是最容易理解的。
用伪代码查找或设计算法;只有这样才担心如何将其放入 ML 中。
【讨论】: