Bonjour, je voudrais écrire un algorithme qui me permettrait de déterminer tous les diviseurs positifs d'un entier naturel A
Variables:
A= entiers naturel
N= diviseurs entiers naturel
Entrée :
Entrer la valeur de A
N=1
Instruction:
Tant que AN et N
1
Si la partie entière de (A/N)=(A/N)
Afficher N
on incrémente N
Fin si N+1=N
Fin tant que
j'ai essayer de mettre se programme dans ma calculatrice TI 82 et sa ne marche pas si il y a un problème dans mon algorithme dite le moi merci d'avance.
Bonjour,
« Ça ne marche pas », ça veut dire quoi ? Rien ne se passe ? Ça affiche quelque chose mais pas ce que tu veux ?...
Pourquoi le « N+1 = N » ? Vu que tu marques déjà « on incrémente N », pas besoin de l'incrémenter une nouvelle fois... Mais en fait c'est plutôt le « on incrémente N » dans le « Si » qu'il faut enlever : en effet, si tu augmentes N seulement quand N est un diviseur de A, ça risque de vite partir en boucle infinie (si par exemple tu prends A=15, au début N=1 divise A donc on affiche 1 et on incrémente N qui vaut alors 2, mais 2 ne divise pas A donc on ne fait rien... On reprend la boucle avec N=2 qui ne divise pas A donc on ne fait rien... etc.).
Et sinon, un petit conseil : évite d'incrémenter N jusqu'à A. En fait, si tu l'incrémentes jusqu'à E(V(A)) (partie entière de racine de A), tu peux avoir accès à tous les diviseurs de A (si N<=V(A) divise A, alors A=NQ où nécessairement Q est un diviseur de N et Q>=V(A)).
Il y a un petit inconvénient, c'est qu'on n'a plus la liste des diviseurs dans l'ordre croissant... en revanche, on a d'autres avantages :
— un petit : on a des couples de diviseurs qui apparaissent plus clairement, ça peut toujours être utile...
— un gros : on gagne beaucoup en temps. Si A vaut 10, d'accord, ça ne se voit pas trop. Mais si tu appliques ton algorithme pour A=1 000 000, ton algorithme fait 1 000 000 de tests... si on s'arrête à V(A)=1000, on en fait beaucoup moins...
je ne maitrise pas encore très bien la programmation sur la Ti82 si vous pouviez mettre le programme en language TI en plus sa serai génial.
Essaye de proposer quelque chose : normalement ton programme ne devrait pas être loin de fonctionner, et les noms des fonctions sur ta TI sont assez transparents.
Si tu te contentes de recopier un programme qu'un autre a rédigé, tu ne progresseras pas : ce qu'il faut faire, c'est regarder ton programme, comprendre pourquoi ça ne marche pas (pour cela, y a généralement une méthode facile : tu prends une feuille, un crayon, et tu appliques toi-même l'algorithme pour une certaine valeur de A), essayer de corriger, voir si ça marche, si oui sauter de joie, sinon regarder ton programme, comprendre pourquoi ça ne marche pas, essayer de corriger, etc.
C'est comme ça que tu progresseras.
ok donc quand je dit sa marche pas c'est que sa m'affiche un seul résultat donc
donc voilà :
Instruction:
Tant que AN et N
1
Si la partie entière de (A/N)=(A/N)
Afficher N
Fin si N+1=N
Fin tant que
ma calculatrice me met erreur à un moment, entre le end et le if , l'erreur vient d'ou ?
End if
N+1->N
le "end if" n'existe pas en syntaxe.
essaye :
if la partie entière de (A/N)=(A/N)
then Afficher N
end
N+1 -> N
Merci, oui enfaite c'est bon, mon programme marche nickel, maintenant je voudrais l'améliorer, quand je prend par exemple A=200 sur la calculatrice, il y a beaucoup de diviseurs et lorsqu'ils s'affichent ils sont en colonne et donc sur mon écran de calculatrice je ne les vois pas tous, n'y aurait t-il pas un moyen de les afficher en ligne ou pouvoir faire défiler les résultat ?
Je ne crois pas que ça soit possible de faire un joli défilement, en revanche il est possible d'ajouter des « Pause » dans ta boucle : ça permet d'arrêter l'exécution du programme jusqu'à ce que tu appuies sur une touche de ta calculatrice (le temps de noter tes résultats par exemple).
À toi de voir où tu places ta « Pause » (dans la boucle ou pas ? si oui, où précisément dans ta boucle ? etc.).
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :