ML中数字的主要除数

时间:2009-05-18 10:04:06

标签: integer primes sml prime-factoring

在ML中,我希望得到一个数字的素数。我怎么能这样做,我是初学者。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

有几种通用算法可用于查找整数的素数除数:请参阅wikipedia。具有简单素性测试的Trial division最容易理解。

在伪代码中查找或设计算法;然后才担心如何把它变成ML。