---
# System prepended metadata

title: CORRECTION DS

---

# CORRECTION DS
## Exercice 1
### Question 1
```python = 
def armstrong(nombre):
    liste_chiffres = list(str(nombre))
    somme = 0 
    for chiffre in liste_chiffres:
        somme = somme + int(chiffre)**3
    
    if somme == nombre : 
        return True
    else : 
        return False 

print(armstrong(153))   
```

## Question 2
La ligne 2 garantit la transformation du nombre pris en une entrée composée de ses chiffres. L’utilisation de str() permet de passer un “iterable”/structure de données linéaires à la fonction list().

## Question 3

```python =

print(armstrong(153))
lst_nb = [2000, 124, 153]
for i in lst_nb:
    print(armstrong(i))
```

### Question 4
```python =
def armstrong(nombre):
    chiffres = str(nombre)
    liste_chiffres = []
    for i in chiffres:
        liste_chiffres.append(int(i))
    somme = 0 
    for chiffre in liste_chiffres:

        somme += chiffre**3
    
    if somme == nombre : 
        return True
    else : 
        return False
    
```

## Exercice 2
### Question 1
Les opérateurs de comparaison et arithmétiques nécessaires sont :
```python =
==
%
```
Exemples :
```python =
4 == 5 renvoie Faux (4 n’est pas égal à 5)
6%2 renvoie 0 (reste de la division euclidienne de 6 par 2)
```

### Question 2
```python=
# version 1 
def diviseurs(nombre): 
    liste_diviseurs = []
    for i in range(1,nombre+1,1):
        if nombre%i == 0 : 
            liste_diviseurs.append(i)
            #liste_diviseurs += [i]
    return liste_diviseurs
# test   
print(diviseurs(8))

# version 2 
def diviseurs2(nombre): 
    liste_diviseurs = []
    for i in range(1,round(nombre**(1/2))+1,1):
        if nombre%i == 0 : 
            liste_diviseurs.append(i)
            liste_diviseurs.append(int(nombre/i))
            #liste_diviseurs += [i, nombre/i]
    liste_diviseurs.sort()
    return liste_diviseurs
# test   
print(diviseurs2(8))
```

# PGCD
# version 1 
def pgcd(nb1, nb2):
    diviseurs1 = diviseurs(nb1)
    diviseurs2 = diviseurs(nb2)
    liste_diviseurs_communs = []
    for i in diviseurs1 : 
        for j in diviseurs2 : 
            if i == j :
                liste_diviseurs_communs.append(i)
    
    return max(liste_diviseurs_communs)
    
print(pgcd(15,21))
# version 2 
def pgcd2(nb1, nb2): 
    diviseurs1 = diviseurs(nb1)
    diviseurs2 = diviseurs(nb2)
    liste_diviseurs_communs = []
    for i in diviseurs1: 
        if i in diviseurs2:
            liste_diviseurs_communs.append(i)
    return max(liste_diviseurs_communs)
print(pgcd2(15,21))