在ML我希望得到一个数的素因数。我怎样才能做到这一点,我是初学者。

有帮助吗?

解决方案

使用简单试除法,这开始于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

其他提示

有用于找到一个整数的素因数几个一般算法:请参阅维基用一个简单的素性测试审判庭是最简单的理解。

查找或设计中的伪代码的算法;只有担心如何把它变成ML。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top