在 Python 中寻找 n 的任何真除数是偶完美平方数的概率的程序

假设我们有一个数 n,我们必须找出 n 的任何真除数是偶完美平方的概率。

因此,如果输入像 n = 36,那么输出将是 1/8,因为 36 有 8 个自因数,它们是 {1,2,3,4,6,9,12,18},其中包括只有一个数 (4) 是完全平方和偶数。

示例

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

from math import gcd

def solve(n):
   if n % 4 != 0:
      return 0
   else:
      nc = n
      ptr = 2
      l = []
      while ptr <= nc ** 0.5:
         a = 0
         while nc % ptr == 0:
            a += 1
            nc = nc / ptr
         if a > 0:
            l += [a]
         ptr += 1
      if nc > 1:
         l += [1]
      k = l[0]
      d = k + 1
      no = int(k / 2)
      for i in l[1:]:
         d = d * (i + 1)
         no *= int(i / 2) + 1
      d = d - 1
      if int(n ** 0.5) ** 2 == n:
         no -= 1
      g = gcd(d, no)
      d = d // G
      no = no // G
      if no == 0:
         return 0
      else:
         return str(no) + '/' + str(d)

n = 36
print(solve(n))

输入

4, 27
输出结果
1/8

猜你喜欢