IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Critère de divisibilité


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 1
    Par défaut Critère de divisibilité
    Bonjour à toute la communauté des devs.
    Si une âme charitable passe sur ce topic et pouvait me donner la solution pour les critères de divisibilité de 2 à 10 je lui en serait vraiment reconnaissant.
    J'ai un devoir a rendre et je suis vraiment pas doué en python.
    La seule chose c'est qu'on a pas le droit d'utiliser le modulo du chiffre en question.

    PS: Un critère de divisibilité c'est la faculté de savoir si un nombre est divisible par tel ou tel nombre.
    Ex 220 est divisible par 2 car il se fini par 0,2,4,6 ou 8
    par 10 car le chiffre des unité est 0
    par 5 car 0 ou 5.

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par pokpok33 Voir le message
    J'ai un devoir a rendre et je suis vraiment pas doué en python.
    c'est balo, vraiment. dans ton malheur vois tout de même le bon coté des choses; comme tu le décris ça n'a rien à voir avec Python, c'est juste des notions de maths niveau cours élémentaire, à moins que tu n'aies un souci plus spécifique au langage, auquel cas n'hésite pas à le décrire clairement et éventuellement avec ton début de code à l'appui

    à priori on ne retient que les critères de divisibilité par 2, 3, 5 et 7, critère de divisibilité par 4 ou 6... j'ai pas connaissance et il y a à mon avis assez peu d'intérêt, du coup la méthode générale pourra consister à tester la division par chacun des nombres de 2 à 10, en comparant le résultat de la division entière et de la division "à virgule flottante"

    https://fr.wikipedia.org/wiki/Critère de divisibilité

  3. #3
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    salut,


    c'est balo, vraiment. dans ton malheur vois tout de même le bon coté des choses; comme tu le décris ça n'a rien à voir avec Python, c'est juste des notions de maths niveau cours élémentaire, à moins que tu n'aies un souci plus spécifique au langage, auquel cas n'hésite pas à le décrire clairement et éventuellement avec ton début de code à l'appui

    à priori on ne retient que les critères de divisibilité par 2, 3, 5 et 7, critère de divisibilité par 4 ou 6... j'ai pas connaissance et il y a à mon avis assez peu d'intérêt, du coup la méthode générale pourra consister à tester la division par chacun des nombres de 2 à 10, en comparant le résultat de la division entière et de la division "à virgule flottante"

    https://fr.wikipedia.org/wiki/Critère de divisibilité
    Bonjour,
    Bien d'accord avec l'aide…
    Cependant, les critères de divisibilité par 4: il suffit que les deux derniers chiffres soient divisibles par 4… Pour 6, quand même!! :-)
    Et pour 8, bien sûr, les trois derniers chiffres doivent être divisibles par 8 (par 2, puis par 2 puis par 2)… Par 9, somme des chiffres divisible par 9.
    Tout ceci pouvant se réaliser en jonglant entre entiers et chaînes de caractères!!

    Clodion

  4. #4
    Membre éclairé
    Avatar de Captain'Flam
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 273
    Billets dans le blog
    1
    Par défaut
    Pour info (et pour la plaisir) allez jeter un oeil sur cette (géniale) page de l'almanach des nombres !

    Hadrien

  5. #5
    Invité de passage
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 1
    Par défaut
    Pour faire simple, tu dois utiliser un tableau. Rien de compliquer en Python surtout en BTS 1 Thomas.

  6. #6
    Invité
    Invité(e)
    Par défaut
    slaiko il y a plus simple encore, tu peux utiliser des expressions régulières.

    Thomas je met le programme sur ce forum demain, a moins qu'un B2 te l'ai déjà donné

  7. #7
    Invité
    Invité(e)
    Par défaut Résultat
    Voila 2 versions différentes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    # Divisibilité
    # Critères de divisibilité par 2,3,4,5,6,7,8,9
    # cf https://fr.wikipedia.org/wiki/Liste_de_crit%C3%A8res_de_divisibilit%C3%A9
     
    # fonctions utilitaires
    def unite (nombre):
        return nombre % 10
     
    def dizaine (nombre):
        return (nombre // 10) % 10
     
    def dizaines (nombre):
        return (nombre // 10)
     
    def centaine (nombre):
        return (nombre // 100) % 10
     
    def sommeChiffres (nombre):
        somme = 0
        while nombre > 0:
            somme = somme + unite(nombre)
            nombre = dizaines (nombre)
        return somme
     
    # Divisible par 2
    # Un nombre est divisible par 2 s'il se termine par 0, 2, 4, 6 ou 8
    def divisiblePar2 (nombre):
        return unite(nombre) in [0, 2, 4, 6, 8]
     
    # Divisible par 3
    # Un nombre est divisible par 3 si la somme des chiffres qui le composent
    # donne 0, 3, 6 ou 9
    def divisiblePar3 (nombre):
        while nombre >= 10:
            nombre = sommeChiffres (nombre)
     
        return  nombre in [0, 3, 6, 9]
     
    # version récursive	
    def divisiblePar3Rec (nombre):
        if nombre < 10:
            return nombre in [0, 3, 6, 9]
        else:
            return divisiblePar3 (dizaines(nombre)+unite(nombre))
     
     
    # Divisible par 4
    # Un nombre est divisible par 4 si le nombre formé de ses deux derniers chiffres l'est
    def divisiblePar4 (nombre):
        deuxDerniersChiffres = nombre % 100
        return deuxDerniersChiffres in [0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96]
     
    # critere avancé :
    #   10d+u = 4 (2d) + 2d + u
    #   donc pour que du soit divisible par 4, il faut que 2d+u le soit
    def divisiblePar4Bis (nombre):
        nombre = nombre % 100
        while nombre >= 10:
            nombre = 2 * dizaine(nombre) + unite(nombre)
        return nombre in [0, 4, 8]
     
     
    # Divisible par 5
    # Un nombre est divisible par 5 s'il se termine par 0 ou 5
    def divisiblePar5 (nombre):
        return unite(nombre) in [0, 5]
     
     
    # Divisible par 6
    # Un nombre est divisible par 6 s'il est divisible par 2 et par 3
    def divisiblePar6 (nombre):
        return divisiblePar2 (nombre) and divisiblePar3 (nombre)
     
     
    # Divisible par 7
    # Un nombre est divisible par 7 si son nombre de dizaine moins 2 fois son chiffre des unités l'est
    def divisiblePar7 (nombre):
        while nombre >= 10:
            nombre = dizaines(nombre) - 2 * unite(nombre)
        # attention ! le nombre obtenu peut etre négatif ! prendre sa valeur absolu
        return abs(nombre) in [0, 7]
     
     
    # Divisible par 8
    # Un nombre est divisible par 8 si le nombre formé par ses trois derniers chiffres l'est
    # Complément :
    # supposons que n   = 100c + 10d + u
    #                   =  96c + 4c + 8d + 2d + u
    #                   = 8 (12c+d) + 4c + 2d + u
    # d'où n divisible par 8 si 4c+2d+u l'est
    #
    # Complément (suite) :
    # si c est pair     4c+2d+u = 8k+2d+u
    #                   et le nombre sera divisible par 8 si (2d+u) l'est
    # si c est impair   4c+2d+u = 8k+2d+u+4
    #                   et le nombre sera divisible par 8 si (2d+u+4) l'est
     
    def divisiblePar8 (nombre):
        nombre = nombre % 1000
        while (nombre >= 10):
            if (centaine(nombre) % 2 == 0):
                nombre = 2*dizaine(nombre)+unite(nombre)
            else:
                nombre = 2*dizaine(nombre)+unite(nombre)+4
        return nombre in [0, 8]
     
     
    # Divisible par 9
    # Un nombre est divisible par 9 si la somme des chiffres qui le composent vaut 0 ou 9
    def divisiblePar9 (nombre):
        while nombre >= 10:
            nombre = sommeChiffres (nombre)
     
        return  nombre in [0, 9]
     
    # version récusive
    def divisiblePar9Rec (nombre):
        if nombre < 10:
            return nombre in [0, 9]
        else:
            return divisiblePar3 (dizaines(nombre)+unite(nombre))
     
    		# version récusive
    def divisiblePar10 (nombre):    
    	return divisiblePar2(nombre) and divisiblePar5(nombre)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    def divisible2(nombre):
    	'''
            Cette fonction retourne True si le nombre donné est divisible par 2.
            '''
    	nombre = str(nombre)
    	if int(nombre[-1:]) == 2 or int(nombre[-1:]) == 4 or int(nombre[-1:]) == 6 or int(nombre[-1:]) == 8:
    		resultat = True
    	else:
    		resultat = False
     
    	return resultat
     
     
    def divisible3(nombre):
    	'''
            Cette fonction retourne True si le nombre donné est divisible par 3.
            '''
    	nombre = sum([int(i) for i in str(nombre)])
    	while nombre >= 3:
    		nombre -= 3
     
    	if nombre == 0:
    		resultat = True
    	else:
    		resultat = False
     
    	return resultat
     
     
    def divisible4(nombre):
    	'''
            Cette fonction retourne True si le nombre donné est divisible par 4.
            '''
    	nombre = str(nombre)
    	nombre = int(nombre[-2:])
    	while nombre >= 4:
    		nombre -= 4
     
    	if nombre == 0:
    		resultat = True
    	else:
    		resultat = False
     
    	return resultat
     
     
    def divisible5(nombre):
    	'''
            Cette fonction retourne True si le nombre donné est divisible par 5.
            '''
    	nombre = str(nombre)
    	if int(nombre[-1:]) == 5 or int(nombre[-1:]) == 0:
    		resultat = True
    	else:
    		resultat = False
     
    	return resultat
     
     
    def divisible6(nombre):
    	'''
            Cette fonction retourne True si le nombre donné est divisible par 6.
            '''
    	if divisible2(nombre) and divisible3(nombre):
    		resultat = True
    	else:
    		resultat= False
     
    	return resultat
     
     
    def divisible7(nombre):
    	'''
            Cette fonction retourne True si le nombre donné est divisible par 7.
            '''
    	nombre = str(nombre)
    	if len(nombre) < 3:
    		nombre = "00" + nombre
     
    	centaine = int(nombre[-3:-1:])
    	unite = int(nombre[-1:])
    	nombre = centaine - 2 * unite
     
    	if nombre % 7 == 0:
    		resultat = True
    	else:
    		resultat = False
     
    	return resultat
     
     
    def divisible8(nombre):
    	'''
            Cette fonction retourne True si le nombre donné est divisible par 8.
            '''
    	nombre = str(nombre)
    	nombre = int(nombre[-3:])
    	while nombre >= 8:
    		nombre -= 8
     
    	if nombre == 0:
    		resultat = True
    	else:
    		resultat = False
     
    	return resultat
     
     
    def divisible9(nombre):
    	'''
            Cette fonction retourne True si le nombre donné est divisible par 9.
            '''
    	nombre = sum([int(i) for i in str(nombre)])
    	while nombre >= 9:
    		nombre -= 9
     
    	if nombre == 0:
    		resultat = True
    	else:
    		resultat = False
     
    	return resultat
     
     
    def divisible10(nombre):
    	'''
            Cette fonction retourne True si le nombre donné est divisible par 10.
            '''
    	nombre = str(nombre)
    	if int(nombre[-1:]) == 0:
    		resultat = True
    	else:
    		resultat = False
     
    	return resultat

Discussions similaires

  1. trier en fonction de 2 critères
    Par iubito dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 16/06/2004, 07h58
  2. Ajout de critères dans Select utilisé par xp_sendmail
    Par bd0606 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 28/05/2004, 17h02
  3. Réponses: 5
    Dernier message: 27/11/2003, 10h55
  4. Pb de critère dans sql
    Par Mr.Gus dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/09/2003, 07h58
  5. Selection sans critères pour un publipostage
    Par Johnjohn dans le forum Access
    Réponses: 23
    Dernier message: 17/06/2003, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo