【问题标题】:Efficient way for generating coprime pairs生成互质对的有效方法
【发布时间】:2018-11-28 21:25:18
【问题描述】:

我需要打印互质数对 (a,b) 的数量,0 http://mathworld.wolfram.com/CarefreeCouple.html

但是程序没有我预期的那么快。 我听说过一种通过使用称为“Farey 序列”的东西来解决这个问题的有效方法,但是代码是用 PHP 编写的,我只能理解 C。

那么哪种方法可以帮助我解决问题呢?谢谢你的时间。

【问题讨论】:

    标签: primes greatest-common-divisor


    【解决方案1】:

    您声明的兴趣是互质数对 (a, b)。这对无忧无虑的夫妇增加了一个额外的限制,即a 是无平方的。因此,它不是同一个问题,尽管有些数学是相似的。据我了解您的问题,它相当于将 Euler totient 函数从 1 加到 n,即所谓的Totient Summatory Function

    我不知道有什么技巧可以提供一个简单的封闭式解决方案来得出答案。但是,我认为在大多数编程语言中修改简单的 Sieve of Eratosthenes (SoT) 应该会在不到 10 秒的时间内为您提供答案。

    通常运行 SoT 只会产生一个素数列表 2 进行筛选,并将我们命中的每个位置中的 (p,1) 条目更改为 (p,2),因此每个 p

    编辑:
    我看到 math.stackexchange.com here 上的问题已经有了更好的答案。在问题的处理得到解决之前,我将暂时保留这个答案。

    【讨论】:

    • 我听说过一种解决问题的递归方法
    • S(n)= (n*(n+1) )/2 -Σ{i=2..n}(S(n/i)) 其中 S(x)=sum{ i=1..x}(phi(x))
    猜你喜欢
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2013-04-20
    • 2017-02-02
    • 1970-01-01
    • 2015-12-19
    相关资源
    最近更新 更多