Programme Facteur |
Auteur |
Message |
Laclochette
Autorisation : Membre
Nb de messages : 5
Inscrit le : Lun 03 Jui 2013, 20:19
|
Posté le : Mar 04 Jui 2013, 9:49
|
|
|
Bonjour,
Voilà, j'ai mis récemment des programmes sur ma calculatrice. N'ayant pas de câble, j'ai fait sans câble donc j'ai écrit tous les programmes sur ma calculatrice. Tous fonctionne sauf 1: Facteur. En fait, il fonctionne mais quelque soit le nombre, c'est-à-dire que A soit entier naturel ou non, il m'écrit "A N EST PAS UN ENTIER NATUREL".
L'aurais-je mal écrit?
Voici ce qu'il y a exactement sur ma calculatrice:
:EffEcr
:Input "A=",A
:EffEcr
:If A=0 ou A=1
:Then
:Output(4,2,"NB NON VALIDE")
:Pause
:EffEcr
:Stop
:End
:If partEnt(A)[different de]0 ou abs(A)[different de]A
:Then
:Output(3,2,"A N EST PAS UN")
:Output(5,2,"ENTIER NATUREL")
:Pause
:Goto 0
:End
:0->dim(L5)
:0->D
:While partEnt(A/2)=0
: D+1->D
: D->dim(L5)
:2->L5(D)
:A/2->A
:End
:partDéc([Racine carré](A))->B
:For(C,3,B,2)
:While partEnt(A/C)=0
: D+1->D
: D->dim(L5)
:C->L5(D)
:A/C->A
:End
:End
:If A[different de]1
:Then
: D+1->D
: D->dim(L5)
:A->L5(D)
:End
:Disp "RESULTAT :"
:Pause L5
:Lbl 0
:EffEcr
Les "L5" ont été mis de la manière suivante: [2nde] [5].
Les espaces avant les "D" sont mis afin d'éviter les émoticones.
Voilà.
|
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
m@thieu41
Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
|
Posté le : Mar 04 Jui 2013, 11:18
|
|
|
Bonjour!
Je n'ai pas tout testé, mais commence par remplacer cette ligne:
Code | If partEnt(A)[different de]0 ou abs(A)[different de]A |
Par:
(tu testais la partie entière au lieu de la partie décimale)
PS: la prochaine fois, pense à mettre les balises de codes, ça rend la lecture plus simple
---------------------- Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)
Et au fait: la politesse n'a jamais tué personne |
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
Laclochette
Autorisation : Membre
Nb de messages : 5
Inscrit le : Lun 03 Jui 2013, 20:19
|
Posté le : Mar 04 Jui 2013, 12:09
|
|
|
Désolée en ce qui concerne la lisibilité du programme ^^'.
Ensuite, c'est déjà mieux, le programme reconnait les nombres naturels. Cependant, il ne décompose pas le nombre en une série de nombres premiers.
|
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
m@thieu41
Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
|
Posté le : Mar 04 Jui 2013, 12:39
|
|
|
Tu l'as trouvé où le prgm?
Je n'ai pas trop le temps de me pencher dessus pour l'instant, je verrai ce soir.
Sinon, tu peux toujours chercher ici, des solutions qui ont l'air de marcher ont été proposées.
---------------------- Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)
Et au fait: la politesse n'a jamais tué personne |
|
|
|
Laclochette
Autorisation : Membre
Nb de messages : 5
Inscrit le : Lun 03 Jui 2013, 20:19
|
Posté le : Mar 04 Jui 2013, 13:30
|
|
|
Et bien sur le site, j'ai téléchargé le programme facteur sans cable.
Prends ton temps, ce n'est pas pressé .
|
|
|
|
Kelk'1
Autorisation : Membre
Nb de messages : 36
Inscrit le : Lun 01 Avr 2013, 18:48
|
Posté le : Mar 04 Jui 2013, 15:39
|
|
|
remplace tes "partEnt" par "partDéc" et remplace ton "partDéc" par "ent("
---------------------- Signature inutile, enjoy =) |
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
m@thieu41
Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
|
Posté le : Mar 04 Jui 2013, 17:02
|
|
|
En fait, tu as fait des erreurs en traduisant de la Ti-82stats à la Ti-82stats.fr:
fPart = Partie décimale = PartDec(
iPart = Partie entière = int(
Tu faisais l'inverse
---------------------- Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)
Et au fait: la politesse n'a jamais tué personne |
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mar 04 Jui 2013, 19:13
|
|
|
Je chipote :
fPart=parDéc
int=partEnt
iPart=ent
Malgré le manque de logique, c'est la réalité. Article
m@thieu41 tu chutes dans mon estime MDR, ne pas connaître les programmes de notre Webmaster adoré. XD
Voici la version ultime de mon programme, épurée de toute complication, malgré un poids légèrement plus important que quand j'avais une routine, et suppression de la liste des puissances.
EDITE deux fois pour trois corrections et une fois pour les commentaires.
Code | Prompt A
EffListe L1
0->U
While non(partDéc(A.5 // on tente la division par 2
U+1->U
2->L1(U
A.5->A
Disp 2
End
rac(A->B
3->W
While A>1 // critère de fin // la boucle tente de diviser par les impairs >3
If W>B // critère de seuil, évite les grands nombres
A->W
While non(partDéc(A/W // division par W
U+1->U
W->L1(U
A/W->A
rac(A->B
Disp W
End
W+2->W
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 |
|
|
|
m@thieu41
Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
|
Posté le : Mar 04 Jui 2013, 20:14
|
|
|
Je plaide coupable
Mais en même temps, je n'ai jamais vraiment connu le webmaster, et ses programmes sont peu optimisés ce qui fait que je ne les regarde pas trop
Par contre, je ne comprends pas : dans ton prgm, tu ne testes que 2 et 3 comme facteurs? (La valeur de W ne varie jamais )
Et aussi: pourquoi tester séparément le nombre 2?
---------------------- Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)
Et au fait: la politesse n'a jamais tué personne |
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mar 04 Jui 2013, 23:14
|
|
|
J'ai oublié la ligne qui incrémente W de 2 et j'ai mal écrit la ligne sous le If.
Edité. *ashamed*
D'abord le crible divise par 2 tant que possible, puis tente de diviser par tous les nombres impairs en commençant par 3. C'est 2 fois plus rapide, et c'est une des choses réalisées par presque tous les cribles dont celui du site.
Puis j'ai deux critères d'arrêt :
-le nombre saisi a été entièrement décomposé, A=1, ou saisie initiale fausse car inf à 1
-le diviseur testé dépasse la racine carrée de la valeur restante de A (valeur actuelle après les premières divisions) : A est un nombre premier et on teste immédiatement la division de A par A pour achever.
Le critère de sortie est ma spécialité, encore meilleur que le traditionnel calcul de racine carrée au tout début en guise de seuil définitif.
---------------------- 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 |
|
|
|
Laclochette
Autorisation : Membre
Nb de messages : 5
Inscrit le : Lun 03 Jui 2013, 20:19
|
Posté le : Mer 05 Jui 2013, 6:23
|
|
|
Erf :p
Trop de messages pour moi en une soirée.
Je vais essayer de les décrypter et après je vous dirai ce qu'il en est ^^.
Merci beaucoup
|
|
|
|
Laclochette
Autorisation : Membre
Nb de messages : 5
Inscrit le : Lun 03 Jui 2013, 20:19
|
Posté le : Mer 05 Jui 2013, 6:57
|
|
|
J'ai essayé le programme donné par linkakro.
Il fonctionne très bien
Et j'ai modifié les partDéc et partEnt comme vous me l'avez conseillé.
Le programme fonctionne très bien maintenant
Merci beaucoup :')
|
|
|
|
m@thieu41
Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
|
Posté le : Mer 05 Jui 2013, 17:50
|
|
|
Heu Linkakro... il y a un petit problème avec ton prgm:
C'est pas plutôt:
Parce que par exemple si A = 15, B = sqrt(15) et A>15...
Donc le programme s'arrête, alors qu'il ne devrait pas
EDIT: Voici un prgm qui reprend pour l'essentiel les idées de Linka ( ) mais (je pense) un peu plus optimisé, si ce n'est en vitesse au moins en taille
Edité une fois pour une correction
Code | Prompt A
EffListe L1
EffVar U2->W
sqrt(A->B
While A!=1
If W>B
A->W
While non(partDéc(A/W
U+1->U
W->L1(U
A/W->A
sqrt(A->B
Disp W
End
W+1+(W!=2->W
End
L1 |
---------------------- Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)
Et au fait: la politesse n'a jamais tué personne |
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mer 05 Jui 2013, 19:40
|
|
|
Désolé, encore planté. C'était normalement :
If W>B
au lieu de If A>B.
Ta fusion de l'étude du nombre 2 aux autres nombres est classique et pratique, mais pas bénéfique en vitesse.
Sinon j'ai déjà fait comme ça avant. Je devrais d'ailleurs le poster comme ça désormais pour éviter que cette question se pose.
Et puis ma nuance sur le nombre dont on étudie la racine carrée n'apporte que peu d'efficacité à l'échelle des nombres classiquement abordés.
---------------------- 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 |
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
m@thieu41
Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
|
Posté le : Mer 05 Jui 2013, 19:51
|
|
|
Autant pour moi
Mais on ne perds pas grand chose en vitesse si? (juste un petit test d'égalité quand W>2, sinon pour W=2 on ne perd quasiment rien...)
---------------------- Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)
Et au fait: la politesse n'a jamais tué personne |
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mer 05 Jui 2013, 20:08
|
|
|
Le temps gagné en test selon l'étude de 2 est à considérer pour toutes les boucles. Un temps minuscule multiplié par des milliers, cela peut être désastreux si on décompose des nombres excessivement grands.
Mais ce n'est certes pas très important sur une TI.
Le choix entre l'étude de la racine du premier A ou l'étude du A divisé ne change que très peu le temps à l'échelle d'une TI.
Mais c'est la seule chose réellement originale de mon programme.
EDIT : second paragraphe réécrit pour clarifier que ce n'est pas le principe de la racine qui est négligeable mais le choix d'une des méthodes de racines.
---------------------- 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 |
|
|
|
m@thieu41
Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
|
Posté le : Mer 05 Jui 2013, 20:24
|
|
|
Bah pour la racine quand même ça peut faire gagner pas mal de tours de boucles si le nombre est grand...
Par exemple si on prend 562275, au lieu de tester plus de 300 nombres grâce à ta méthode on en teste qu'une dizaine...
---------------------- Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)
Et au fait: la politesse n'a jamais tué personne |
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mer 05 Jui 2013, 21:21
|
|
|
Je voulais dire le choix d'une des méthodes de racine, pas le principe de la racine. (décidément je loupe aucune erreur faisable cette semaine) (j'ai édité)
Nous avons utilisé la racine de A actuel alors que celui du site utilise la racine initiale.
Si on note le temps X utilisé par les calculs de racines, F le plus grand facteur, Y le temps de division, N le nombre de facteur, et le temps T du reste de la boucle, on a approximativement les temps totaux :
- racine initiale : rac(A)*T+Y*N
- racine de A divisé : rac(F)*(T+X)+Y*N
La seconde méthode n'est pas forcément rentable, cela serait à calculer après mesure des temps de la calculatrice.
J'ai envie de troller : 562275=3*3*3*5*5*7*7*17 et 17~~4.12^2 donc ce n'est pas ce nombre qui montrera l'exemple de 300 boucles même sans étude de la racine
---------------------- 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 |
|
|
|
m@thieu41
Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
|
Posté le : Mer 05 Jui 2013, 21:35
|
|
|
Donc en fait tout depend du plus grand nombre premier facteur de A
Plus il est petit et plus ta methode est appropriee
---------------------- Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)
Et au fait: la politesse n'a jamais tué personne |
|
|
|