【问题标题】:Prime divisors of a number in MLML中数字的素数
【发布时间】:2009-05-18 10:04:06
【问题描述】:

在 ML 中,我想获得一个数字的主要除数。我是初学者,我该怎么做。

【问题讨论】:

    标签: integer primes sml prime-factoring


    【解决方案1】:

    使用简单的试除法,它以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
    

    【讨论】:

      【解决方案2】:

      有几种通用算法可以找到整数的素数:参见wikipediaTrial division 简单的素性测试是最容易理解的。

      用伪代码查找或设计算法;只有这样才担心如何将其放入 ML 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-14
        • 2013-11-16
        • 2017-02-18
        • 1970-01-01
        相关资源
        最近更新 更多