Misez p'tit, Optimisez - N°78 - Nombres ultras premiers

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2931
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: Misez p'tit, Optimisez - N°78 - Nombres ultras premiers

Message par zpalm »

Marge a écrit :Ce que je voulais dire, c'est que si tu veux réellement transformer ton HP-41CX en instrument de mesure vraiment pointu, tu devrais mesurer le temps des écarts induits par l'enclenchement et l'arrêt du chronomètre aux pas qui ne sont pas lancés précisément au début et à la fin du programme.
Oui mais bon, on ne mesure pas le 100m aux JO. Je ne pense pas qu'on ait besoin de départager les machines au pouième d'instruction près :mrgreen:

Ceci dit je ne connais pas l'article auquel tu fais référence. Si tu pouvais le retrouver...
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6186
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit, Optimisez - N°78 - Nombres ultras premiers

Message par Marge »

zpalm a écrit : Ceci dit je ne connais pas l'article auquel tu fais référence. Si tu pouvais le retrouver...
C'est de la spéléologie, mais je vais essayer.

(édition : un première recherche de vingt minutes n'a pas abouti. Dans mon souvenir, il ne s'agit pas de littérature officielle d'HP, même s'il existe la notion de correction de la mesure dans le mode d'emploi du Time module retranscrit sur cet excellent site néerlandais)
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3419
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit, Optimisez - N°78 - Nombres ultras premiers

Message par C.Ret »

Toujours en suivant l'algorithme de Ledudu et en m'inspirant du code de zpalm, je suis en mesure de proposer un code pour HP-41C n'utilisant aucun module exotique, ou module mémoire supplémentaire.

J'effectue le chronométrage comme pour mon SHARP PC-1211 à l'aide d'un chronomètre manuel et de l'instruction TONE 1 qui émet un <bip>

Code : Tout sélectionner

ST PRGM                                           STACK                      Comments 
                                                  t:  z:   y:  x:
01 LBL "MPO78"                                    .    .    .   L
02   10^x  2
04   LBL 00                                       .    .   pL   n            ** DISPLAY n **
05     STO Z  10  *  x<=y?  GTO 01
10     LastX  ST* Z  RDN  TONE 1  VIEW Z
15   LBL 01                                       .    .   pL 10n            ** 10n+1 **
16     1   ST+ Y  RCL X
19   LBL 02                                       pL   n    f   .            ** ISPRIME ? **
20     RDN  2  +  RDN  STO Y  R^  /  lastX  x<>y
29     FRC    x=0?  GTO 03                                                   ** n is composite -> next n
32     X<> L  x>y?  GTO 02                                                   ** continue test 
35     RDN  RDN  GTO 00                                                      ** n is prime   -> display

38   LBL 03                                       pL   n    .  .             ** TEST 9 SUFFIX LOOP  **
39     RDN  RDN  INT  RCL X
43     10  MOD  9  x#y?  GTO 04                                              ** no 9 suffix --> NEXT n
48     RDN  LastX  ST/ Z                                                     ** else n <-- INT(n/10)
51   GTO 03		

52   LBL 04                                       pL   n    i  9             ** NEXT n **
53     SIGN  ST+Z  ST+Z  x<>y
57 GTO 02                                         pL n+2    1  .

Code : Tout sélectionner

01 LBL "MPO78"  10^x  2 
04   LBL 00  STO Z  10  *  x<=y?  GTO 01  LastX  ST* Z  RDN  TONE 1  VIEW Z
15   LBL 01  1   ST+ Y  RCL X
19   LBL 02  RDN  2  +  RDN  STO Y  R^  /  lastX  x<>y  FRC  x=0?  GTO 03  X<> L  x>y?  GTO 02  RDN  RDN  GTO 00
38   LBL 03  RDN  RDN  INT  RCL X  10  MOD  9  x#y?  GTO 04  RDN  LastX  ST/ Z  GTO 03
52   LBL 04  SIGN  ST+Z  ST+Z  x<>y
57 GTO 02

J'obtiens les temps suivants:

Code : Tout sélectionner

    1.04s         2.0000
    4.00s        23.0000
    7.70s       233.0000
   18.98s     2,333.0000
   52.15s    23,333.0000
 7'22.62s   233,993.0000
C'est donc plus rapide qu'avec un SHARP PC-1211, mais moins qu'avec une HP-41C aux modules dopés !!
Modifié en dernier par C.Ret le 06 mai 2017 09:42, modifié 1 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6186
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit, Optimisez - N°78 - Nombres ultras premiers

Message par Marge »

Pardon d'un peu polluer cet excellent MPO, mais je crois avoir trouvé la réponse...
Marge a écrit :
zpalm a écrit : Ceci dit je ne connais pas l'article auquel tu fais référence. Si tu pouvais le retrouver...
C'est de la spéléologie, mais je vais essayer.

(édition : un première recherche de vingt minutes n'a pas abouti. Dans mon souvenir, il ne s'agit pas de littérature officielle d'HP, même s'il existe la notion de correction de la mesure dans le mode d'emploi du Time module retranscrit sur cet excellent site néerlandais)
J'en suis presque certain : il ne s'agit pas d'un article, mais d'un passage de "l'encyclopédie" Extend your HP-41 de W. A. Mier-Jedrejowicz ...

Le problème est que je ne sais plus comment je l'ai consultée... et je ne l'ai toujours pas retrouvée !
Bon, je sors, désolé les copains. :arrow:
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2931
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: Misez p'tit, Optimisez - N°78 - Nombres ultras premiers

Message par zpalm »

@C.Ret: excellent programme pour une 41C de base !
Marge a écrit :Pardon d'un peu polluer cet excellent MPO, mais je crois avoir trouvé la réponse...
[...]
J'en suis presque certain : il ne s'agit pas d'un article, mais d'un passage de "l'encyclopédie" Extend your HP-41 de W. A. Mier-Jedrejowicz ...
Merci! J'ai retrouvé le passage page 235 où il est question de la mesure du temps d'exécution du chronomètre: il est mentionné un temps de 25ms, je mesure 30ms sur ma 41CX, mais ça reste négligeable par rapport à la fonction mesurée.
Marge a écrit :Le problème est que je ne sais plus comment je l'ai consultée... et je ne l'ai toujours pas retrouvée !
Extend your HP-41 est consultable sur http://www.hp41.org, d'ailleurs le contenu complet de hp41.org est maintenant disponible en téléchargement gratuit ici: http://www.hp41.org/Archive.cfm
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6186
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit, Optimisez - N°78 - Nombres ultras premiers

Message par Marge »

:D Bonne nouvelle !
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: Misez p'tit, Optimisez - N°78 - Nombres ultras premiers

Message par Gilles59 »

Bonjour les pocketophiles ;D

Une version HP50 + Library Goferlist. pas optimisé coté perf, mais çà marche

Code : Tout sélectionner

«


«
 DUP 1 - ALOG SWAP ALOG FOR a                                  @ Pour a allant de 10^(n-1) jusqye 10^n
  a DUP ->STR Chars Inits TAIL                                 @ ex : 233 -> { {"2"} {"2" "3"}  {"2" "3" "3"}}
  1. « Strcat STR-> » DOSUBS « ISPRIME? » All {KILL} IFT DROP  @ -> { 2 23 233} puis teste si tous  premiers 
 NEXT                                                          @ au suivant
»
'MPO78' STO
ex : 4 MPO78 donne 2333
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Répondre

Retourner vers « Tous les Pockets »