Kryptografia/zajecia1/potegowanie.py
Jakub Adamski 1bb7241fd4 zajecia1
2021-10-07 15:10:41 +02:00

31 lines
520 B
Python

#potęgowanie binarne (left-to-right)
def potegowanie(x, k):
y = 1
i = k.bit_length()
while i >= 0:
y = y**2
if (k & 1) == 1:
y = y*x
k = k >> 1
i = i - 1
return y
def potegowanieimod(x, k, n):
y = 1
i = k.bit_length()
while i >= 0:
y = y**2 % n
if (k & 1) == 1:
y = y*x % n
k = k >> 1
i = i - 1
return y
print(potegowanie(2, 6))
print(potegowanieimod(5, 2, 10))