用于查找 x 之间的对数的程序,其乘法是 x 并且它们在 Python 中互质

假设有一个函数f(x),它计算 (p, q) 对的数量,使得

  • 1 < p <= q <= x

  • p 和 q 互质

  • p * q = x 所以如果我们有 n。

我们必须为 1 到 n 范围内的所有 i 找到总和 f(x[i])。

因此,如果输入类似于 12,那么输出将是 3,因为 x 值的范围从 1 到 12。

  • 当 x = 6 时,有效对是 (2, 3) 所以 f(6) = 1

  • 当 x = 10 时,有效对是 (2, 5) 所以 f(10) = 1

  • 当 x = 12 时,有效对是 (3, 4) 所以 f(12) = 1

所以总共有 3 对。

示例

让我们看看以下实现以获得更好的理解 -

from math import sqrt, gcd

def solve(n):
   count = 0
   sqr = int(sqrt(n)) + 1
   for base in range(2, sqr):
      for i in range(1, min(base, n // 基数 - 基数 + 1)):
         if gcd(base, i) != 1:
            continue
         count += (n - i * base) // (基地*基地)

   return count

n = 12
print(solve(n))

输入

12
输出结果
3

猜你喜欢