Poster un nouveau sujet Poster une réponse
cribleur de nombres premiers
Auteur Message
tapenad



Autorisation : Membre
Nb de messages : 197
Inscrit le : Jeu 17 Nov 2011, 13:20
Posté le : Lun 09 Jan 2012, 20:10   Citer 

voici un prgm + ou- utile(pas a mon niveau en tout cas) qui permet de trouver tout les nombres premiers de 1 à un certains nombre,il rame un peu(beaucoup) mais il est pratique pour les premiers nombres premiers( laugh.gif ):

Code

prgm:crible
:0->N
:For(A,1,1000)       ///2000 est la limite
:If partDec(A/2)=0.5
:Then
:If parDec(A-3)[differend de]0
:Then
:For(K,2,A/2-0.5
:If parDec(A/K)=0
:N+1->N
:End
:End
:End
:If partDec(A/2)=0 et partDec(A/3)=0
:2->N
:If A=3 ou A=2
:If N=0
:Disp A
:0->N
:End





et voila... happy.gif happy.gif

----------------------
L’erreur est humaine, mais pour provoquer une vraie catastrophe, il faut un ordinateur.

je suis premier!!!

je m'aime.
 Adresse email Haut de page Bas de page 
 
azerty1



Autorisation : Membre
Nb de messages : 438
Inscrit le : Dim 12 Déc 2010, 20:44
Posté le : Lun 09 Jan 2012, 20:37   Citer 

Je pense qu'on pourra l'optimiser (je laisse cette tâche pour sandro winkle.gif )
Sinon l'optimiser en changeant completement le mode fonctionnement, au lieu d'afficher une table des nombres premiers jusqu'à X, on pourrait simplement demander un nombre X à l'utilisateur et regarder s'il est premier, si non, afficher ses diviseurs. Regarde dans des sujets plus anciens, ce type de prog' a été traité plus d'une fois winkle.gif

----------------------
Ti-Connect 64bits
PROTECT
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Lun 09 Jan 2012, 21:43   Citer 

Bon, à la va-vite:

Code
prgm:crible
:EffVarNFor(A,1,E3        //le E des puissances de 10     ///2000 est la limite
:If partDec(A/2)=0.5
:Then
:If parDec(A   //car partdec(A)=partdec(A-3)
:Then
:For(K,2,.5A-.5
:If parDec(A/K
:N+1->N
:End
:End
:End
:If partDec(.5A)=0 et non(partDec(A/3
:2->N
:If A=3 ou A=2
:If non(N
:EffVar NDisp A
:End



----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
azerty1



Autorisation : Membre
Nb de messages : 438
Inscrit le : Dim 12 Déc 2010, 20:44
Posté le : Lun 09 Jan 2012, 22:11   Citer 

Et à la fin, on ne pourrait pas remplacer

Code
:If A=3 ou A=2
:If non(N
:EffVar NDisp A



Par


Code
:If A=3 ou A=2 and non(N
:EffVar nDispA



?

----------------------
Ti-Connect 64bits
PROTECT
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 09 Jan 2012, 22:41   Citer 

Le premier If (cité ci-dessus) empêche le second de travailler. Soit c'est élaboré, soit c'est une erreur de copie.
Je crois que cela correspond rigoureusement à ceci mais je n'ai rien testé.
Code
If (A=3 ou A=2) et non(N) ou (A-3 et A-2
EffVar NDisp A



Autre code immaginé sur le tas et testé sous vti.
Code
{2->L1
Disp 2
For(A,3,E3,2
If prod(fPart(A/L1
Then
A->L1(1+dim(L1
Pause A
End
L1



----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Mer 11 Jan 2012, 13:56   Citer 


Code
:0->N
:For(A,1,1000)       ///2000 est la limite
:If partDec(A/2)=0.5
:Then
:If parDec(A-3)[differend de]0
:Then
:For(K,2,A/2-0.5



Je pense que sans les deux then ça marche aussi.
je m'explique : premier if : "if partdec( etc" est vrai, la condition juste après est éxécutée. C'est un autre if. Si il est vrai, la conditon juste après est aussi éxécutée, donc on éxécute la boucle for.

J'ai raison ou pas ? bigmouth.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
azerty1



Autorisation : Membre
Nb de messages : 438
Inscrit le : Dim 12 Déc 2010, 20:44
Posté le : Mer 11 Jan 2012, 20:33   Citer 

Mais alors pourquoi ne pas mettre:

Code
:0->N
:For(A,1,1000)       ///2000 est la limite
:If (partDec(.5A)=.5) et (parDec(A-3))
:Then
:For(K,2,A/2-0.5
:...            //2eme boucle For
:End
:End            //Fin du If
:...            //Suite première boucle For, exécutée dans les 2 cas.
:End



----------------------
Ti-Connect 64bits
PROTECT
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Mer 11 Jan 2012, 21:35   Citer 

la tu as les deux octets du "et" et "then" alors que sinon tu n'as qu'un octet avec le "if" ?

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes