Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Détermination de nombres premiers
linkakro le 02/11/2009 à 19:43
Voici un prototype.
J'indique un entier auquel s'arrêter et le programme détermine tous les premiers inférieurs. (pour démarrer j'en met quand même quelques-uns pré-déterminés)
Mais ça ne marche pas.
Code
Prompt B
EffListe L5
2->L5(1)
3->L5(2)
5->L5(3)
For(W,1,B
dim(L5)+1->U
EffListe L4
For(V,1,dim(L5)
W/L5(V)->I
If I=ent(I)
Then
1->L4
Else
0->L4
End
End
If max(L4)=0
W->L5(U)
End
Pour une raison inconnue le dernier If n'est lu q'une fois. (verrifié par des disp placés tour à tour à divers endroits)
Mon hypothèse la plus plausible est que l'effacement de la liste 4 foire.
Quel est votre verdict ?
dysto le 02/11/2009 à 20:50
Pourquoi utiliser des listes ? (en plus 2 !)linkakro le 02/11/2009 à 23:03
La liste L5 montre tous les nombres premiers déterminés (autant qu'on veut, alors qu'on a que 27 variables en lettre+théta) et L4 permet le fonctionnement (encore sans limite de nombre de variables)
S'il y a mieux que les listes dit moi quoi alors.

Sangohan38 le 02/11/2009 à 23:33
Les suites peut-être (je sais pas si on peut stocker des variables dans les suites).
Sinon l'outil le plus magique reste les matrices car c'est un tableau et non une seule colonne.
Sangohan38linkakro le 02/11/2009 à 23:40
J'y ai pensé mais je ne vois pas comment nettoyer une ligne ou une colonne en conservant le reste de la matrice. Or je me base sur ça pour ce programme.linkakro le 03/11/2009 à 00:02
J'ai étudié le programme du site.
Si je modifie mon premier FOR comme ça, ça marche
Faut pas chercher à comprendre

. Quoique ça serait bien.
(Je sais comment marche For, c'est pourquoi ça résoud le problème que je ne comprend pas)
Rézus le 03/11/2009 à 14:41
La boucle For incrémente une variable d'une valeur de départ jusqu'à une valeur d'arrivée en fonction d'un pas:
For(variable à incrémenter,valeur de départ,valeur d'arrivée,pas
Ex:
Code
:For(A,1,16
:Output(1,A,"A
:End
-Les valeurs de départ,d'arrivée et le pas peuvent être des variables également.
-Si le pas est égal à 1,pas la peine de le marquer dans l'instruction.
-Le pas peut être un réel quelconque (enfin dans les possibilités de la calculette)
!!-A l'inverse de while et de Repeat,quand ta variable atteint la valeur d'arrivée,les instructions de la boucle sont encore effectuées une fois.
!!-Tu peux faire une boucle infinie si la valeur de départ est supérieur à la valeur d'arrivée et que le pas est positif,c'est valable pour l'inverse aussi bien sur.
Voilà tu sais tout !
ça peut servir pour effacer une ligne dans une matrice,ou pour la remplir:
Code
:{3,10}->dim([A]
:For(A,1,10
:1->[A](1,A
:End
Overdozage le 29/11/2012 à 20:36
linkakro ton prog ne marche pas, il s'arrête avec ERR:TYPE DONNEE avec 0->L4
Ps : je sais que je remonter un lointain programme mais il a l'air bien

linkakro le 29/11/2012 à 23:01
Effectivement ce programme revient de loin. Je programmais depuis quelques mois.
Ecrit "L4(V" et cela devrait marcher.
Avec mes connaissances actuelles je réécrit le programme à l'arrache.
EDIT : évidemment j'ai écrit des conneries. Programme corrigé avec test à l'appui.
Code
{2->L1
Prompt N
1->M
For(W,3,N,2
If prod(fPart(W/L1
Then
M+1->M
W->L1(M
End
End
L1
Overdozage le 02/12/2012 à 19:18
Hum, non, ça marche pas ^^ mais alors pas du tout !
Aucune erreur, mais il affiche toujours {2}, comme unique nombre premier quoi que l'on mette comme chiffrelinkakro le 02/12/2012 à 20:02
Corrigé avec test à l'appui cette fois.
Optimisé avec les fonctions de listes. C'est plus facile à gérer qu'une boucle. Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.