Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
est_premier [2009/01/03 11:45] tyrtamos |
est_premier [2011/03/25 15:02] tyrtamos |
||
---|---|---|---|
Ligne 21: | Ligne 21: | ||
La fonction renvoie " | La fonction renvoie " | ||
- | Petit complément ici, on a une fonction " | + | Petit complément ici, on a une fonction " |
<code python> | <code python> | ||
- | # ============================================================================= | ||
- | def lsqrt(x, | ||
- | """ | ||
- | if x<2: | ||
- | if x==1: | ||
- | return 1 | ||
- | else: | ||
- | return 0 | ||
- | i, j = 1, x | ||
- | while i!=j: | ||
- | k=(i+j)//2 | ||
- | if k**n>x: | ||
- | j=k | ||
- | else: | ||
- | i=k+1 | ||
- | if x-k**n< | ||
- | return k-1 | ||
- | return k | ||
- | |||
- | # ============================================================================= | ||
def estpremier(n): | def estpremier(n): | ||
""" | """ | ||
Ligne 56: | Ligne 36: | ||
# autres cas | # autres cas | ||
k=3 | k=3 | ||
- | r=lsqrt(n)+1 | + | r=lsqrt(n) |
while k<=r: | while k<=r: | ||
if n % k == 0: | if n % k == 0: | ||
Ligne 71: | Ligne 51: | ||
</ | </ | ||
- | Cas particulier: | + | Cas particulier: |
Vous pouvez tester cette fonction avec la Calculext ici: [[http:// | Vous pouvez tester cette fonction avec la Calculext ici: [[http:// | ||
Ligne 129: | Ligne 109: | ||
# Test de primalité probabiliste de Miller-Rabin | # Test de primalité probabiliste de Miller-Rabin | ||
def _millerRabin(a, | def _millerRabin(a, | ||
+ | """ | ||
# trouver s et d pour transformer n-1 en (2**s)*d | # trouver s et d pour transformer n-1 en (2**s)*d | ||
d = n - 1 | d = n - 1 |