Aide sûre un algorithme

MandahT Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonsoir , voilà j’aurai besoin d’un algorithme en Visual Basic ( en Console Application) qui me permet de dire si le nombre entré est un nombre factoriel ou pas . Par exemple , si on entre 24 , c’est un nombre factoriel parce que 1*2*3*4 = 24 , par contre ; 3 ,4,5 ,7 ... ne sont pas factoriel .
A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Déjà... À partir de 2!, tous les nombres factoriels sont pairs
Tu peux donc exclure les nombres négatifs

Ensuite, soit tu "stockes" une liste des nombres concernés possibles et tu regardes si le nombre en fait parti ou non

=> Limité par le nombre de valeurs que tu auras stocké ...

Soit tu fais une boucle de 1 à N (n$ étant le nombre saisit..) et tu calculs la multiplication de chaque occurrence et tu regardes si à un moment tu obtiens la valeur cherchée... (beaucoup plus long si le nombre entré est très très grand.... )


Soit tu fais un mix des deux solutions.....
Si le nombre entré est plus grand que la valeur max que tu as stocké ... tu fais le calcul par itération en partant de ta plus grande valeur....
Et puis... si ç'est un nombre factoriel tu l'ajoutes automatiquement à ta liste... comme ça le prochain coup il y sera déjà...



0
MandahT Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci !
En fait , j’ai déclaré une variable x et je lui assigné des valeurs :
If x= 2 or x=6 or x=24 or x=120 ... then
Console.Writeline (‘ C’est un nombre Factoriel’)
Else
Console.Writeline(“Ce n’est pas un nombre factoriel”)

Mais j’aimerais utilisé une boucle pour éviter d’entrer les nombres ( j’ai pas très bien compris ce que tu as dit)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > MandahT Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
imagine que l'utilisateur donne le nombre 150
Déjà... est-ce que le nombre est supérieur à 1 et est pair ? Oui.
Donc je continue...
Je vais donc boucler de 2 à 150 et faire le calcul ...

total = 0
boucle i=2 -> 150
total = total * i

est-ce que total = mon nombre cherché ? Si oui.. Factoriel.. sinon on continue la boucle
est-ce que total est < au nombre cherché ? Si oui.. on continue.. sinon ce n'est pas un factoriel
fin boucle
Si à la fin de la boucle je n'ai pas trouvé le nombre.. c'est qu'il n'est pas factoriel..
0