在AP中查找第一个元素,该元素是Python中给定Prime的倍数

假设我们有一个AP系列的第一项(A)和共同差(d),并且我们还有素数P,我们必须找到给定AP中第一个元素的位置,该位置是AP的倍数。给定素数P。

因此,如果输入像A = 3,D = 4,P = 5,则输出将为3,因为给定AP的第四项是质数5的倍数。因此,第一项= 3,第二项= 3 + 4 = 7,第三项= 3 + 2 * 4 = 11,第四项= 3 + 3 * 4 = 15。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个函数get_pow()。这将花费x,y,p

  • 回答:= 1

  • x:= x mod p

  • 当y> 0时

    • ans:=(ans * x)mod p

    • 如果y AND 1不为零,则

    • y:= y / 2

    • x:=(x * x)mod p

    • 返回ans

    • 从主要方法中,执行以下操作-

    • A:=模组P

    • D:= D mod P

    • 如果A等于0,则

      • 返回0

    • 否则,当D等于0时,则

      • 返回-1

    • 除此以外,

      • X:= get_pow(D,P-2,P)

      • return(X *(P-A))mod P

    示例

    让我们看下面的实现以更好地理解-

    def get_pow(x, y, p) :
       ans = 1
       x = x % p
       while y > 0 :
          if y & 1 :
             ans = (ans * x) % p
          y = y >> 1
          x = (x * x) % p
       return ans
    def get_nearest(A, D, P) :
       A %= P
       D %= P
       if A == 0 :
          return 0
       elif D == 0 :
          return -1
       else :
          X = get_pow(D, P - 2, P)
          return (X * (P - A)) % P
    
    A = 3
    D = 4
    P = 5
    print(get_nearest(A, D, P))

    输入值

    A = 3 D = 4 P = 5

    输出结果

    3
    猜你喜欢