python中prime_在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值