Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

Algorithme diviseurs positifs d'un entier naturel

Posté par
cavalierbronze
18-10-11 à 18:34

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 N1
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.

Posté par
Porcepic
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 18:54

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...

Posté par
cavalierbronze
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 18:54

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.

Posté par
Porcepic
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 19:05

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.

Posté par
cavalierbronze
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 19:05

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 N1
Si la partie entière de (A/N)=(A/N)
Afficher N

Fin si N+1=N

Fin tant que

Posté par
cavalierbronze
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 19:18

ma calculatrice me met erreur à un moment, entre le end et le if , l'erreur vient d'ou ?

End if
N+1->N

Posté par
pgeod
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 19:48


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

Posté par
Porcepic
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 19:48

Sauf erreur pour finir un bloc (de condition, de boucle, etc.) il faut juste un « End », non ?

Posté par
Porcepic
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 19:48

... Bonsoir pgeod.

Posté par
pgeod
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 19:52

bonsoir Porcepic

Posté par
cavalierbronze
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 20:24

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 ?

Posté par
Porcepic
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 20:57

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.).

Posté par
pgeod
re : Algorithme diviseurs positifs d'un entier naturel 18-10-11 à 21:23

une pause dans la boucle, comme dit Porcepic, permet de voir un à un
tous les diviseurs trouvés.

un stockage en liste L1, puis un Disp L1 en fin de programme permettrait
également de "revoir" l'ensemble des diviseurs trouvés.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !