Programme nombre divisible par tous les chiffres de 1 à 20

Résolu/Fermé
PrimalTea - Modifié le 25 janv. 2023 à 13:35
 PrimalTea - 25 janv. 2023 à 15:41

Bonjour,

J'ai un problème concernant un programme qui ne fonctionne pas car il boucle à l'infini pour une raison qui m'est inconnue.

Le programme est le suivant :

nb = 1
while True:
    divisible = True
    for i in range(1, 21):
        if nb % i != 0:
            divisible = False
            break
    if divisible:
        break
    else:
        nb += 1

print(nb)

Avez-vous une idée de "pourquoi ce programme ne fonctionne pas alors qu'il est censé me retourner le plus petit nombre divisible par tous les nombres de 1 à 20" ?


Windows / Firefox 109.0

2 réponses

jee pee Messages postés 39658 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 avril 2024 9 238
Modifié le 25 janv. 2023 à 13:22

Bonjour,

Tu devrais être moins ambitieux au départ et commencer par des valeurs plus petites (1,8), tu verras que cela fonctionne, jusqu'à 20 le temps d’exécution doit être très long, tu peux rajouter des print intermédiaires pour suivre le déroulé du programme.

Tu peux réduire le nombre de cycles en utilisant range(20, 1, -1):

PS : Pour la mise en forme des sources, au dessus de la zone d'édition de tes messages, il y a des icônes pour l'enrichissement du texte. Celle qui a cet aspect < > permet d'appliquer au code, suivant une liste de valeurs, le format correspondant à sa nature (html, Php, C, Python, Shell, ...).

0

Merci beaucoup pour votre retour.

En effet j'ai essayé avec de plus petites valeurs et ça fonctionne. Et pour (1,21) ça à également fonctionné, j'ai juste dû attendre une minute environ.

Encore merci et bonne journée.

0