Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 696
Réponses : 7
Type : discussion
Etat : réponses autorisées

Aide sur programation diviseur

kevkev62 le 02/01/2011 à 05:43
Voila mon programme:

ahh.gif->P
:Prompt N
:Effliste L1
:For (A,2,N-1)
:pgcd(N,A)->T
:If TDiferent de(je sais pas fair le egal / ^^ )1 et PartDéc(T)=0
:Then
:p+1->P
:T->L1(P)
:End
:End
:Pause L1

Machine:TI 82 stats Fr

Et voila le probleme c'est que je fini avec genre des centaine de fois le meme diviseur.Je voudrais fair en sorte que si T deja dans L1 , ne pas le stoquer, mais je ne trouve pas.Je voudrais qu'il ne mafiche que les diviseurs, et pas 100fois le meme et qui fait que je ne m'y retrouve plus.C'est assez urgent.Sa fait 1semaine que je le cherche ><

Merci a celui qui voudra bien m'aidé, et bonne année a tous.
lover-lol le 02/01/2011 à 11:38
ça marcherait pas un ?
Code
If L1(P)=P
Then
Goto ...
kevkev62 le 02/01/2011 à 16:28
Mais P sa reprensente L1 donc si

L1(p)=P sa me servirais a rien non?

A moin que je comprend mal, j'ai pas l'habitude de codé.
linkakro le 03/01/2011 à 00:26
P représente la dimension de la liste et rien d'autre.

Code
:0->P
:Prompt N
:{0->L1
:For (A,2,N-1)
:pgcd(N,A)->T
:1->B
:For(W,1,P
:If L1(W)=T
:0->B
:End
:If T=/=1 et PartDéc(T)=0 et B
:Then
:p+1->P
:T->L1(P)
:End
:End
:Pause L1

Je l'ai fait au plus simple, mais des suppléments peuvent régler des problèmes de vitesse.

Si je comprenais mieux le but de ton programme, je pourrais mieux t'aider. Car une restructuration radicale pourrais peut-être simplifier.
kevkev62 le 03/01/2011 à 07:57
C'est en faite un DM a rendre pour demain ou l'enoncé me dit clairement, au depart un programme prouvant que N est pas premier. Donc j'utilisé for (A,2,N-1) et non RacineCarréde N car l'énoncé le dit.

Et la seconde parti du devoir consiste a modifier le premier programme pour fair en sorte qu'il donne les diviseur d'un nombre. J'ai trouvé comment et je cherche comment fair pour faire:

Si T deja existant dans L1 ne pas stoquer.

Car je me retrouve avec une grande liste ou se trouve plusieur fois les meme nombre.
darkmory le 03/01/2011 à 20:32
if L1(coordonnée de T dans la liste) =0
T -> L1
...

après a adapté mais l'idée est là!
kevkev62 le 03/01/2011 à 21:08
Je comprend pas vraiment se que vous me dites, etant nouveau dans les programmes, j'ai deja eu du mal a faire le debut, lol , donc en faite vous avez bien compris que je veux juste que T ne soit pas stoquer Plusieur fois dans L1.

Si a partir de mon programme jepeut le faire, dite moi svp
linkakro le 04/01/2011 à 23:07
Et le programme que j'ai déjà posté, c'est quoi à votre avis ?
Il règle ce problème (si je ne me suis pas planté)

-Et j'ai mieux pour les diviseurs. Parmi une solution pgcd et une solution division.
-Et puis un pgcd ne peut pas être nul

Une base simple
Code
:Prompt N
:1->B
:For (A,2,N-1)
:pgcd(N,A)->T
:If T=A
:Disp "PAS PREMIER 
:If T=A
:0->B
:End
:If B
:Disp "PREMIER

version complète
Code
:0->P
:Prompt N
:{0->L1
:For (A,2,N-1)
:pgcd(N,A)->T
:If T=A
:Then
:p+1->P
:T->L1(P)
:End
:End
:Pause L1
:If P
:Disp "PAS PREMIER
:If not(P
:Disp "PREMIER

===================================
darkmory : Regarde La boucle For(W,...) dans mon premier prog.