在Python中编写程序,以找到n的任何适当约数都是偶数完全平方数的概率

在Python中编写程序,以找到n的任何适当约数都是偶数完全平方数的概率

假设我们有一个数字n,我们必须找出任何约数n都是偶数完全平方数的概率。

因此,如果输入为n = 36,则输出将为1/8,因为有八个36的适当约数,即{1,2,3,4,6,9,12,18},其中只有一个数字4是完全平方数并且是偶数。

为了解决此问题,我们将按照以下步骤进行 –

  • 如果n mod 4与0不同,则
    • 返回0
  • 否则,
    • nc:= n,ptr:= 2
    • l:=新列表
    • while ptr <=nc的平方根,do
      • a:= 0
      • while nc mod ptr与0相同时,do
      • a:= a + 1
      • nc:= (nc / ptr)的地板
      • if a > 0,则
      • 将a附加到列表l中
      • ptr:= ptr + 1
    • 如果nc > 1,则将1附加到列表l中
    • k:= l [0]
    • d:= k + 1
    • no:= (k / 2)的地板
    • 对于每个i在l [从索引1到结尾]中,do
      • d:= d *(i + 1)
      • no:= no * (i / 2的地板)+ 1
    • d:= d-1
    • 如果n是完全平方数,则
      • no:= no-1
    • g:= d和no的gcd
    • d:= d的底数
    • no:= no的底数
    • 如果no与0相同,则
      • 返回0
    • 否则,
      • 返回一个分数no/d

例子

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

 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))
 ```

##  输入 
```python 
4,27

输出

1/8

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程