You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.1 KiB
81 lines
1.1 KiB
import math
|
|
|
|
#Ex1
|
|
def euclide(a,b):
|
|
while b!=0:
|
|
r = a%b
|
|
a = b
|
|
b = r
|
|
print(a)
|
|
return a
|
|
|
|
def etranger(a,b):
|
|
if (euclide(a,b) == 1):
|
|
print(a,' et ', b,' sont étrangers')
|
|
else:
|
|
print(a,' et ', b,' ne sont pas étrangers')
|
|
|
|
def euclide_etendu(a,b):
|
|
r,ru,rv = a,1,0
|
|
s,su,sv = b,0,1
|
|
while s!=0:
|
|
q = r//s
|
|
new_s = r%s
|
|
new_su = ru-su*q
|
|
new_sv = rv-sv*q
|
|
r,ru,rv = s,su,sv
|
|
s,su,sv = new_s,new_su,new_sv
|
|
return r,ru,rv
|
|
|
|
def inverse_modulaire(a,b):
|
|
r,u,v = euclide_etendu(a,b)
|
|
if (r == 1):
|
|
return u
|
|
|
|
def generateur(g,p):
|
|
L = []
|
|
for i in range (1, p):
|
|
test=(g**i)%p
|
|
if (test in L):
|
|
return 0
|
|
else:
|
|
L.append(test)
|
|
print(L)
|
|
return 1
|
|
|
|
def exp_basique(x,n,p):
|
|
res=(x**n)%p
|
|
return res
|
|
|
|
def exp_rapide(x,n,p):
|
|
if (n==1):
|
|
return x%p
|
|
else:
|
|
if (n%2==0):
|
|
return exp_rapide((x**2)%p,n/2,p)%p
|
|
else:
|
|
return (x*exp_rapide((x**2)%p,(n-1)/2,p))%p
|
|
|
|
|
|
|
|
u=exp_rapide(123456789,123456798,987654321)
|
|
print(u)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test():
|
|
# a = 79
|
|
# b = 22
|
|
# if (euclide(a,b) == 1):
|
|
# print(a,' et ', b,' sont étrangers')
|
|
# print(euclide_etendu(a,b))
|
|
# else:
|
|
# print(a,' et ', b,' ne sont pas étrangers')
|
|
|
|
#test()
|