Aide sûre un algorithme

Fermé
MandahT Messages postés 3 Date d'inscription lundi 4 décembre 2017 Statut Membre Dernière intervention 24 février 2018 - 4 déc. 2017 à 18:39
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 5 déc. 2017 à 22:30
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
4 déc. 2017 à 19:15
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 lundi 4 décembre 2017 Statut Membre Dernière intervention 24 février 2018
5 déc. 2017 à 22:06
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > MandahT Messages postés 3 Date d'inscription lundi 4 décembre 2017 Statut Membre Dernière intervention 24 février 2018
5 déc. 2017 à 22:30
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