Tester l'algorithme :


(cliquer sur le bouton ci-dessus pour lancer ou relancer l'exécution de l'algorithme)

Les diviseurs d'un entier n sont tous les nombres de 1 à n-1 qui divisent n.

exemple : 6= 1 2 3

exemple : 36= 1 2 3 4 6 9 12 18

Nombres amis :

Deux entiers A et B sont dis amis si la somme des diviseurs de A égale B et la somme des diviseurs de B égale A.

Exemple : 220 et 284 sont amis.

Allez-voir :  

 

Résultat :

Code de l'algorithme :
VARIABLES
  i EST_DU_TYPE NOMBRE
  Nb EST_DU_TYPE NOMBRE
  tmp EST_DU_TYPE NOMBRE
  quotient EST_DU_TYPE NOMBRE
  S1 EST_DU_TYPE NOMBRE
  j EST_DU_TYPE NOMBRE
  S2 EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  LIRE Nb
  POUR i ALLANT_DE 2 A Nb
    DEBUT_POUR
    j PREND_LA_VALEUR 2
    S1 PREND_LA_VALEUR 1
    TANT_QUE (j * j <= i ) FAIRE
      DEBUT_TANT_QUE
      tmp PREND_LA_VALEUR i / j
      quotient PREND_LA_VALEUR floor(tmp)
      tmp PREND_LA_VALEUR tmp - quotient
      SI (tmp == 0 ) ALORS
        DEBUT_SI
        S1 PREND_LA_VALEUR S1 + j + quotient
        FIN_SI
      j PREND_LA_VALEUR j + 1
      FIN_TANT_QUE
    j PREND_LA_VALEUR 2
    S2 PREND_LA_VALEUR 1
    TANT_QUE (j * j < S1) FAIRE
      DEBUT_TANT_QUE
      tmp PREND_LA_VALEUR S1 / j
      quotient PREND_LA_VALEUR floor(tmp)
      tmp PREND_LA_VALEUR tmp - quotient
      SI (tmp == 0 ) ALORS
        DEBUT_SI
        S2 PREND_LA_VALEUR S2 + j + quotient
        FIN_SI
      j PREND_LA_VALEUR j + 1
      FIN_TANT_QUE
    SI (i != S1 ET i == S2) ALORS
      DEBUT_SI
      AFFICHER i
      AFFICHER " et "
      AFFICHER S1
      AFFICHER " sont amis."
      FIN_SI
    FIN_POUR
FIN_ALGORITHME