在Python中查找给定方程的值的程序

在Python中查找给定方程的值的程序

假设我们有五个整数a,b,c,d,n。我们必须找出((ab)(cd)) mod n的值。输出值是一个整数。

因此,如果输入是a = 2,b = 3,c = 2,d = 4,n = 10,则输出将为6。

2^3 = 8
2^4 = 16
8^16 = 281474976710656
281474976710656 mod 10 = 6

要解决这个问题,我们将遵循以下步骤−

  • 定义一个名为helper()的函数,它将获取n值
    • p := n
    • i := 2
    • 包含以下内容的while i * i <= n
      • 如果n mod i与0相同,则执行以下操作
      • p :=p-floor值(p/i)
      • 当n mod i与0相同时,执行以下操作
      • n:=floor值(n/i)
      • 如果i与2不同,则执行以下操作
      • i:= i + 2
      • 否则,
      • i:= i + 1
    • 如果n > 1,则执行以下操作
      • p := p-floor值(p/n)
    • 返回p
  • 如果b与0相同或(c与0不同且d不同),则执行以下操作
    • 返回(a^0) mod n
  • 如果c与1相同或d与0相同,则执行以下操作
    • 返回(a^ b) mod n
  • 如果a和a mod n相同,则执行以下操作
    • 返回0
  • 如果d与1相同,则执行以下操作
    • 返回(a^ b * c) mod n
  • p := helper(n)
  • e := (c ^ d) mod p + p
  • 返回(((a ^ b) mod n) ^ e) mod n

例子

让我们看一下以下实现以更好地理解−

def helper(n):
   p = n
   i = 2
   while i * i <= n:
      if n % i == 0:
         p -= p // i
      while n % i == 0:
         n = n // i
      if i != 2:
         i += 2
      else:
         i += 1
   if n > 1:
      p -= p // n
   return p

def solve(a, b, c, d, n):
   if b == 0 or (c == 0 and d != 0):
      return pow(a, 0, n)
   if c == 1 or d == 0:
      return pow(a, b, n)
   if a == 0 or a % n == 0:
      return 0
   if d == 1:
      return pow(a, b * c, n)
   p = helper(n)
   e = pow(c, d, p) + p
   return pow(pow(a, b, n), e, n)

print(solve(2, 3, 2, 4, 10))

输入

2, 3, 2, 4, 10

输出

6

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程