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

Algorithmes et structures de données Discussion :

Fonction Diviseurs d'un entier strictement positif


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Fonction Diviseurs d'un entier strictement positif
    Bonsoir;
    Je suis débutant en algorithmique et j'aimerais comprendre cette fonction Diviseurs qui permet de renvoyer la somme des diviseurs d'un entier strictement positif. La fonction est la suivante:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Fonction Diviseurs(k:entier):entier
       i:entier
    Debut
        sdx <- 1
      pour i de 2 à(x div 2) faire
       Si (x MOD i=0)
                   Alors sdx <- sdx+1
       Fin si
      Fin pour 
    Diviseurs <- sdx
    Fin


    Je n'ai pas compris le corps de la fonction, pourquoi on a initialisé le compteur de la boucle à 2, utilisé (x div 2) et testé si (x MOD i =0). Bref, je n'ai pas compris cette fonction Alors si vous pouvez me l'éclaircir un peu, je vous serai reconnaissant
    Merci !!!

  2. #2
    Rédacteur

    A première vue, ca ne retourne pas la somme des diviseurs, mais le nombre de diviseurs de x/2 (x n'étant pas défini )

    Bref, c'est assez curieux comme fonction.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre éprouvé
    Bonjour,
    Citation Envoyé par Binôme_pfe Voir le message

    pourquoi on a initialisé le compteur de la boucle à 2,
    Afin d'éviter un test inutile qui est toujours vrai :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    if (x Mod 1)



    Citation Envoyé par Binôme_pfe Voir le message

    utilisé (x div 2)
    Par ce que le plus grand diviseur d'un nombre x ne peut être supérieur à sa moitié ( x non compris)

    Citation Envoyé par Binôme_pfe Voir le message

    et testé si (x MOD i =0)
    Afin de déterminer si i est diviseur de x.

    Comme il a été dit, x n'est pas défini!! il doit surement s'agir du paramètre de la fonction que vous notez k.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»