在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:=xmodp
当y>0时
ans:=(ans*x)modp
如果yAND1不为零,则
y:=y/2
x:=(x*x)modp
返回ans
从主要方法中,执行以下操作-
A:=模组P
D:=DmodP
如果A等于0,则
返回0
否则,当D等于0时,则
返回-1
除此以外,
X:=get_pow(D,P-2,P)
return(X*(P-A))modP
示例
让我们看下面的实现以更好地理解-
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