Page 1 of 4

Listes et nombres premiers

Unread postPosted: 23 Oct 2018, 17:06
by kinkazma
Bonjour à tous, j’ai fais ce programme, mais je voudrais qu’a chaque fois que je le lance, il créé une nouvelle liste s’il en existe déjà une nommée L1… de même s’il existe déjà L2 parce que j’aurais déjà lancé deux fois le programme, qu’il créé L3… et ainsi de suite.
Il donne les nombres premiers dans un intervalle entre z et a.

Code: Select all
Define LibPub premier(z,a)=
Prgm
l1:={}
While z<a
z+1→z
If string(isPrime(z))="true" Then
Disp z
l1[dim(l1)+1]:=z
EndIf
EndWhile
DelVar z
EndPrgm

Re: Listes et nombres premiers

Unread postPosted: 23 Oct 2018, 18:52
by Hamza.S
salut,

si tu n'as pas supprimé les bibliothèques préinstallées, tu as une fonction qui te donne la liste des nombres premiers entre a et b pourquoi ne pas l'utiliser directement ?

Re: Listes et nombres premiers

Unread postPosted: 23 Oct 2018, 19:36
by Noury
kinkazma wrote:
Code: Select all
...
If string(isPrime(z))="true" Then
...


Regarde la page 103 du guide de référence, il y a un code très performant.
En particulier, tu verras comment utiliser de manière efficace les fonctions qui renvoient un booléen.

Re: Listes et nombres premiers

Unread postPosted: 24 Oct 2018, 08:44
by UnCurieux
D'après ce que je vois, il y a une fonction chez les ti nspire CX CAS qui trouve directement les nombres premiers ? Pratique.

Re: Listes et nombres premiers

Unread postPosted: 24 Oct 2018, 08:50
by Hamza.S
C'est le haut de gamme, il y a plein de choses même s'il n'y a pas tout

Re: Listes et nombres premiers

Unread postPosted: 24 Oct 2018, 08:52
by Noury
En fait, la fonction isPrime détermine si un nombre passé en paramètre est premier ou non. Elle renvoie un booléen.
Hamza, je n'ai pas trouvé la fonction dont tu parles, et qui travaille sur un intervalle.

Re: Listes et nombres premiers

Unread postPosted: 24 Oct 2018, 09:07
by Noury
C'est bon, j'ai trouvé.
C'est numtheory\primelist()

Merci pour l'info.

Je ne connaissais pas ces bibliothèques. C'est très riche!

Re: Listes et nombres premiers

Unread postPosted: 24 Oct 2018, 10:30
by kinkazma
J'ai trouvé une gros defi mais là je ne vois pas comment faire mon délire !
Le but est de faire la liste qui obtient un nouvel argument à chaque fois que j'ai UN nombre premier, et à cette liste s'ajoute 1.
Ça c'est déjà fait et c'est facile.

Je veux que pour ma liste de N éléments la quantité d'éléments soit un intervalle de 3159 éléments, et je ne cherche pas à avoir chaque éléments mais la quantité d'éléments.
------
Premier (0,100)
2
3
5
...
->25
Terminé
------
Il y a 25 nombres premiers entre 0 et 100.

Premier(0,10^4)
2
3
5

-> 0,3159 : n éléments
-> 3159,6318 : p éléments
...

Et c'est là que je rajoute un tant que,
Parce que moi que je veux être averti lorsque la machine à trouvé une liste avec plus d'éléments que K éléments. Qui peut être 471 par intervalle par exemple...

Pour l'idée d'avoir une liste nouvelle à chaque fois je me débrouille bien sans !

Pourquoi je fais ça ? POUR LE PLAISIR D'APPRENDRE ! ??

Re: Listes et nombres premiers

Unread postPosted: 24 Oct 2018, 10:46
by Noury
Tu n'as pas besoin de rajouter une nouvelle boucle "tant que".
Dans ta seule et unique boucle, il faut incrémenter un compteur à chaque fois que tu trouves un nombre premier.
Autrement dit, tu fais +1 quand isPrime renvoie "true".
Il faut bien entendu initialiser ton compteur à zéro avant la boule.
Et enfin, après avoir incrémenté le compteur, il faut vérifier si tu as atteint la valeur maximale. Donc un nouveau if, pour voir s'il faut t'arrêter ou pas.

Re: Listes et nombres premiers

Unread postPosted: 24 Oct 2018, 11:33
by Hamza.S
Pour les listes c'est faisable avec une variable globale qui s'incrémente à chaque fois que le programme a fini de s'exécuter.
Code: Select all
© hors programme
nliste:=1
©Dans le programme
expr("liste"&string(nliste)&":={}")
...
nliste:=nliste+1

Pour le reste j'ai pas compris ce que tu veux faire