Aller au contenu

Exercice de spé factorielles


est01

Messages recommandés

Lorsqu'on applique la fonction factoriser_entier sur les nombres de 0! à 20! et qu'on calcule 0! à 20!, on constate que le premier zéro terminale dans la forme décimale apparaît pour 5!, en même temps, 5 apparait dans la forme factorisée de 5!.De plus, on constate que, pour les nombres suivants, le nombre de zéros équivaut à l'exposant de la puissance de 5 dans la forme factorisée. C'est pourquoi , nous pouvons conjecturer que le nombre de zéros de n! est égal à l'exposant de 5 dans la forme factorisée .

 

C'est mieux ?

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 112
  • Created
  • Dernière réponse
  • E-Bahut
il y a 14 minutes, marcsa a dit :

Lorsqu'on applique la fonction factoriser_entier sur les nombres de 0! à 20! et qu'on calcule 0! à 20!, on constate que le premier zéro terminale dans la forme décimale apparaît pour 5!, en même temps, 5 apparait dans la forme factorisée de 5!.De plus, on constate que, pour les nombres suivants, le nombre de zéros équivaut à l'exposant de la puissance de 5 dans la forme factorisée. C'est pourquoi , nous pouvons conjecturer que le nombre de zéros de n! est égal à l'exposant de 5 dans la forme factorisée .

 

C'est mieux ?

Oui, c'est mieux.

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut
Il y a 23 heures, marcsa a dit :

Voilà ce que je ferais pour la C1

nbCinq(m):={
local compteur, q;
compteur:=0;
q:=m/5
tant que q==floor(q) faire
compteur = compteur+1;  
q:=q/10
ftantque;
retourne compteur;
}:; 

Bonjour,

Je suis en accord avec ce code à la syntaxe près et une coquille dans la boucle.

Ensuite, arrives tu à utiliser des codes maintenant ?

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut
il y a 8 minutes, marcsa a dit :

Je ne vois pas où sont mes erreurs ... 

oui j'arrive un peu mieux 

mais pour la  suite je ne vois pas comment faire 

Pourtant, tu as su corriger ce genre d'erreurs dans la partie B. Teste ton code avec XCAS, tu verras qu'il te renverra des erreurs. Mais tes erreurs sont des erreurs de rigueur. Compare ton code et ceux proposés dans ton énoncé, tu verras que tu n'as pas repris le code avec rigueur.

Mets une capture d'écran d'XCAS avec le résultat des différents programmes.

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut
il y a 1 minute, marcsa a dit :

c'est bon maintenant ça marche .

je peux le recopier dans ma copie alors ?

Capture d’écran 2016-10-21 à 13.48.30.png

C'est mieux !!! :)

Ton code marche et te donnera la bonne réponse pour une raison qui est dans les questions suivantes. Mais en l'état, tu n'aurais pas tous les points car ça aurait pu échouer aussi avec d'autres diviseurs que 5.

Réfléchis à la signification de chaque ligne et compare avec l'objectif de ce programme. Je pense que tu devrais voir une ligne "incorrecte".

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut
il y a 6 minutes, marcsa a dit :

je comprends que l'objectif du programme est de donnée le nombres à l'exposant de 5 dans la forme factorisée.

je ne vois cependant pas de ligne incorrecte ...

Et analyse chaque ligne ! Si tu l'avais fait, tu verrais que tu ne fais pas ce que tu dis. Donc, détaille le rôle de CHAQUE ligne.

Lien vers le commentaire
Partager sur d’autres sites

on initialise les variables compteur et q:  compteur prend la valeur 0 et q prend la valeur m/5

puis la boucle: tant que q est égal à une partie entière, on incrément le compteur de 1 et q prend la valeur q/10

fin de la boucle

on affiche le compteur, qui correspond à l'exposant de 5

 

je ne vois vraiment pas où est les problème 

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut
il y a 2 minutes, marcsa a dit :

on initialise les variables compteur et q:  compteur prend la valeur 0 et q prend la valeur m/5

puis la boucle: tant que q est égal à une partie entière, on incrément le compteur de 1 et q prend la valeur q/10

fin de la boucle

on affiche le compteur, qui correspond à l'exposant de 5

 

je ne vois vraiment pas où est les problème 

Tu ne fais que lire le programme sans l'analyser. Je te demande de me le détailler. Donc, dis moi pourquoi on fait ces lignes, LIGNE PAR LIGNE.

Exemple pour la première et dernière lignes :

nbCinq(m) :={ : sert à déclarer le nom de la fonction.

....

 

}:; sert à dire que la fonction s'arrête. 

Explique moi le reste.

Lien vers le commentaire
Partager sur d’autres sites

nbCinq(m):={  sert à déclarer le nom de la fonction 
  local compteur,q; sert à délclarer le nom des variables 
  compteur:=0;     sert à initialiser la variable compteur (prend la valeur 0)
  q:=m/5; sert à initialiser la variable q (prend la valeur m/5)
  tantque q==floor(q) faire sert à donner la condition pour laquelle la boucle tant que doit continuer de tourner
  compteur:=compteur+1; sert à dire quelle valeur prend la variable compteur au fur et à mesure  que la boucle fait "un tour"
   q:=q/10; sert à dire quelle valeur prend la variable q au fur et à mesure  que la boucle fait "un tour"
   ftantque sert à dire que la boucle s'arrête que la condition donnée n'est plus valable (càd quand q n'est plus égal à la partie entière)
   retourne compteur; sert à dire qu'il faut afficher la valeur de compteur une fois que la boucle est finie
}:; sert à dire que la fonction s'arrête

 

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut
il y a 3 minutes, marcsa a dit :

nbCinq(m):={  sert à déclarer le nom de la fonction 
  local compteur,q; sert à délclarer le nom des variables 
  compteur:=0;     sert à initialiser la variable compteur (prend la valeur 0)
  q:=m/5; sert à initialiser la variable q (prend la valeur m/5)
  tantque q==floor(q) faire sert à donner la condition pour laquelle la boucle tant que doit continuer de tourner
  compteur:=compteur+1; sert à dire quelle valeur prend la variable compteur au fur et à mesure  que la boucle fait "un tour"
   q:=q/10; sert à dire quelle valeur prend la variable q au fur et à mesure  que la boucle fait "un tour"
   ftantque sert à dire que la boucle s'arrête que la condition donnée n'est plus valable (càd quand q n'est plus égal à la partie entière)
   retourne compteur; sert à dire qu'il faut afficher la valeur de compteur une fois que la boucle est finie
}:; sert à dire que la fonction s'arrête

 

Très clairement, tu n'as pas compris l'algorithme. Tu t'es contentée de reprendre celui du sujet et ta modification n'a pas altéré la valeur car le nombre de zéros correspond à l'exposant de la puissance de 5. Il faut que tu travailles ta rigueur. Tu n'es pas bête mais vraiment pas assez rigoureuse.

Ton erreur, c'est dans q  := q/10. Tu cherches les exposants de la puissance de 5. Donc, il faut diviser par 5 et non par 10.

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut
il y a 3 minutes, marcsa a dit :

pourtant quand je l'ai testé, ça m'a donné les bonnes valeurs de l'exposant de 5 

je vous avais bien dit que j'étais nulle en algorithme !! j'en ai marre de ce DM ça va me plomber toutes mes vacances 

Ce n'est pas tant l'algorithmique que la rigueur générale qui te manque. Tu n'es pas si mauvaise en algorithmique pour une terminale.

Et comme je te l'ai dit, je sais qu'il marche et qu'il donne la bonne réponse. Mais c'est un coup de chance.

Accroche toi !!

Lien vers le commentaire
Partager sur d’autres sites

  • E-Bahut
il y a 1 minute, marcsa a dit :

seq(nbCinq(n!)-nbZero(n!),n,1,100)

ou soustrait le nombre de zéro à l'exposant de 5 pour n allant de 1 à 100?

Je ne te demande pas ce que fait la commande, juste de regarder le résultat. Après, je te ferai réfléchir sur la signification de la commande.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...
spam filtering
spam filtering