############################################# # PROGRAMMES DU PROBLEME DE LA SEMAINE 9 ############################################# # Test de primalité def Tprem_ou_pas(n): assert n > 1 TPREM = True d = 2 while (d < n) and (TPREM == True): if n % d == 0: TPREM = False d = d + 1 return TPREM # Valuation p-adique def Vadic(n,p): assert n > 0 assert Tprem_ou_pas(p) val = 0 while n % (p**(val+1)) == 0: val += 1 return val # Fonction "Carmichael" def Carmi(n): TCARMI = True if Tprem_ou_pas(n) == True: TCARMI = False k = 2 while (k < n) and (TCARMI == True): if (k**n - k) % n != 0: TCARMI = False k = k + 1 return TCARMI # Liste des nombres de Carmichael entre a et b def List_Carmi(a,b): L = [] for k in range(a,b): if Carmi_ou_pas(k): L += [k] return L # Liste des nombres de Carmichael entre a et b, avec affichage de la durée from time import * # le module time contient la fonction time(), qui renvoie l'heure de l'horloge du système, en secondes. On peut s'en servir comme d'un chronomètre, comme l'illustre la fonction ci-dessous. def List_Carmi2(a,b): t0 = time() # On déclenche le chronomètre L = List_Carmi(a,b) duree = int(1000 * (time() - t0)) / 1000 # On arrête le chrono, et on calcule la durée (avec 3 décimales) return L, duree