arithmetique.py

Created by cent20

Created on May 17, 2022

2.36 KB


# 2nde - Chapitre 17 : scripts python

# Version 1, avec une boucle for
def div(n):             
    for i in range(1, n+1, 1):
        if n % i == 0:
            print(i, "est un diviseur de", n)

# Version 2, avec une boucle while ▼
def div(n):             
    i = n
    while i>0: # On va tester toutes les div de n par i, i allant de n à 1.
        if n % i == 0: # Si la division "tombe juste" et qu'il n'y a pas de reste
            print(i, "est un diviseur de", n)
        i = i - 1 # On décrémente pour tester un autre diviseur

# Version 3, avec une boucle while ▲
def div(n):             
    print("Liste des diviseur de ", n)
    i = 1
    while i <= n: 
        if n % i == 0: 
            print(i, end=", ")      # une optimisation d’affichage
        i = i + 1         
        

def isprime(n):
    prime = True # On suppose le nombre premier
    i = n - 1 # Le premier diviseur testé sera n-1
    while i > 1:
        if n % i == 0: # Si la division "tombe juste"
            print(n, "n'est pas un nombre premier")
            prime = False # On déclare que le nombre n’est pas p.
            break # On sort de la boucle while (optimisation)
            # Cela permet aussi de n’afficher qu’1 fois le texte
        i = i - 1 # On va tester le suivant
    if prime: # Si prime=True, le nombre est bien premier
        print(n, "est un nombre premier")

def prime(n):
    prime = True
    for i in range(2, n, 1):
        if n % i == 0:
            prime = False
            break
    if prime:
        print(n, "est un nombre premier")

def findprime(a, b):
    for n in range(a, b + 1):
        prime(n)

# Maths expertes - Chapitre 5 : PGCD et applications

# Version 1, classique et sans astuce        
def pgcd(a , b):
    if a < b :
      k = a
      a = b
      b = k
    while a % b != 0:
        r = a % b
        a = b
        b = r
    return b

# Version 2, on exploite les possibilités de python
def pgcd(a , b):
    a, b = max(a, b), min(a, b)
    while a % b != 0:
        a, b = b, a % b
    return b
    
# Version 3, on gère les entiers relatifs et les erreurs
def pgcd(a , b):
    a, b = max(abs(a), abs(b)), min(abs(a), abs(b))
    if a != int(a) or b != int(b):
        return "Il faut saisir des entiers"
    if a == 0 or b == 0: # Le cas (0,0) n'est pas géré.
        return max(a,b)
    while a % b != 0:
        a, b = b, a % b
    return b