A faire comme Jürgen Keller

Les derniers trucs auxquels vous avez joué, les derniers ordinateurs que vous avez bidouillés.

Modérateur : Politburo

Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3400
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

A faire comme Jürgen Keller

Message par C.Ret »

C'est à dire à imprimer les nombres premiers jusqu'à 10'000

J'ai réécrit un petit code pour cela, mais comme je n'ai pas d'HP-19C je ne sais pas s'il est plus efficace ou plus rapide !!?

Cela m'a rappelé le dernier pokétiquaires où je n'avais pas réussit à battre l'HP-28S de ledudu à ce petit jeu.
Nous ne sommes pas allez non plus aussi loin.

En tout cas, l'HP-41C met moins de 5h pour afficher cette liste de nombres. Je ne l'ai pas imprimée, je suis trop radin.
Modifié en dernier par C.Ret le 15 mars 2018 10: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.
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: A faire comme Jürgen Keller

Message par Ben »

Ca bouffre un rouleau de papier vite fait ça!
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3400
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: A faire comme Jürgen Keller

Message par C.Ret »

En fait cela revient à imprimer 1229 nombres

Moi je n'ai eut assez de papier que pour les nombres premiers inférieur à 100 :
Impression IR sur HP82240A depuis HP41C
Impression IR sur HP82240A depuis HP41C
25th primes is 97.png (68.03 Kio) Vu 15638 fois
Ce qui est bien c'est que ces 25 premiers nombres premiers permettent de déterminer la primalité de tous les nombres entiers jusqu'à 10'000 inclus.
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.
jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2362
Enregistré le : 16 févr. 2008 23:34
Localisation : Paris 20ème

Re: A faire comme Jürgen Keller

Message par jxano »

On peut se débrouiller pour imprimer les nombres sur plusieurs colonnes !
Programmeur abscons.
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6167
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge »

jxano a écrit : 01 mars 2018 11:15 On peut se débrouiller pour imprimer les nombres sur plusieurs colonnes !
Très astucieux, jxano !

Je vais tâcher de récupérer le pgm dont il est question pour étudier cette possibilité.
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
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6167
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge »

En fait, le programme est assez court (environ 50 pas, la moitié de la capacité du HP-19c), et il se contente de calculer les nombres premiers à partir de la division par les nombres impairs en dessous de la racine carrée du nombre candidat (ce dernier point était alors vendu, à juste titre, chez BYTE comme une amélioration substantielle de la vitesse d'exécution du programme comparée à celle d'un TRS-80 testé dans le numéro de mars 1980).

On peut faire encore beaucoup mieux :

1. Comme l'a suggéré C.Ret, on peut utiliser une majorité des vingt registres pour y stocker les premiers nombres premiers calculés qui doivent beaucoup accélérer la recherche des suivants et descendre bien en-dessous des 15 heures ;
2. Comme l'a suggéré jxano, il est possible de permettre la sortie des résultats en deux colonnes (peut-être plus, mais deux, c'est déjà bien) avec la virgule comme séparation.

Voici le programme de Wilfred Aslan, un sympathique gaillard de Pennsylvanie, publié chez BYTE :
PGM_PREMIERS_HP-19C.png
PGM_PREMIERS_HP-19C.png (237.52 Kio) Vu 15583 fois
Qui fera mieux ? Je m'y essaierai ce dimanche...
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 : 3400
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: A faire comme Jürgen Keller

Message par C.Ret »

Marge a écrit : 01 mars 2018 15:33 [...]
On peut faire encore beaucoup mieux :

1. Comme l'a suggéré C.Ret, on peut utiliser une majorité des vingt registres pour y stocker les premiers nombres premiers calculés qui doivent beaucoup accélérer la recherche des suivants et descendre bien en-dessous des 15 heures ;
2. Comme l'a suggéré jxano, il est possible de permettre la sortie des résultats en deux colonnes (peut-être plus, mais deux, c'est déjà bien) avec la virgule comme séparation.
[...]
3. On peut gagner encore un peu de temps si l'on évite d'avoir à tester TOUS les nombres impairs jusqu'à 10'000 en utilisant l'astuce que Jxano connaît bien (il me l'avait rappelé lors d'un de nos MPO sur un sujet fort proche) qui consiste à parcourir les nombres impair de 2 en 4 répétivement:

Code : Tout sélectionner

Tous les impairs:
             +2    +2    +2    +2    +2    +2    +2    +2    +2    +2    +2    +2    +2 
2    3     5     7     9    11    13    15    17    19    21    23    25    27    29    31 ...
p    p     p     p     -     p     p     -     p     p     -     p     -     -     p     p 
2    3     5     7          11    13          17    19          23   *25*         29    31
             +2       +4       +2       +4       +2       +4       +2       +4       +2    ...
Parcours +2+4: seul 2/3 des impairs sont testés.
Corolairement, si l'on utilise le parcours +2+4, il n'y a plus besoin lors du test de primalité de tester le facteur 3. de la même façon qu'il ne sert à rien de tester le facteur 2 en parcourant tous les impairs.
En effet, on parcourant +2+4 à partir de 5, on se retrouve avec une série de nombre tous impair de la forme n=6k±1 qui ne peuvent être un multiple de 6 et donc ni multiple de 2 ni de 3 !

P.S.: Si l'on va jusqu'à 10'000, mettre 2 nombre sur la même ligne nécessitera jusqu'à 2x5 chiffres. Il sera donc difficile d'en mettre plus, sauf à changer le format au fur et à mesure de l'avancement. Ce qui risque fort de ralentir le déroulement du programme ?

La fin du listing est facile à imaginer ( n'oublions pas qu'il y a un nombre impair de nombres premiers jusqu'à 10'000). Par contre il faudra se mettre d'accord sur la façon de faire lors des changement de taille des nombres :

Code : Tout sélectionner

_______________   ~~~~~~~~~~~~~~~
       2.3 ***       977.983 ***     ou     2.00003 ***    ce qui facilite le truc, mais nuit à la lisibilité ?!?
       5.7 ***       991.997 ***
     11.13 ***     1009.1013 ***
     17.19 ***     1019.1021 ***
     23.29 ***     1031.1033 ***
~~~~~~~~~~~~~~~   ~~~~~~~~~~~~~~~
     83.89 ***     9923.9929 *** 
    97.101 ***     9931.9941 ***
   103.107 ***     9949.9967 *** 
   109.113 ***     9973.0000 ***       ou    9973.10007 ***     mais là on dépasse 10'000 !?!
~~~~~~~~~~~~~~~   _______________
Modifié en dernier par C.Ret le 01 mars 2018 18:42, modifié 4 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 : 6167
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge »

Wouaouh, toujours plus fort... je vais néanmoins m'en tenir à mes premiers obstacles. ;)

Au sujet de ton PS, je suis d'accord, ça devient vite une usine à gaz en plus.

P.-S. : avez-vous remarqué que le programme de BYTE place 1 dans les nombres premiers ?
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
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5217
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: A faire comme Jürgen Keller

Message par bernouilli92 »

On ne peut pas juste imprimer les nombres les uns derrière les autres avec juste un ou espace entre? On passe à la ligne quand on arrive au bout de la ligne.
HP, Casio, Sharp, Psion, quelques TI et divers autres
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6167
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge »

bernouilli92 a écrit : 01 mars 2018 18:23 On ne peut pas juste imprimer les nombres les uns derrière les autres avec juste un ou espace entre? On passe à la ligne quand on arrive au bout de la ligne.
Il faut séparer les nombres par une virgule ; si on essaie avec un espace, cela fait entrer en jeu les exposants pour seulement des nombres à deux chiffres, car sinon passer à la ligne exige d'arrêter le nombre (et comment ?).

La solution du zéro mérite réflexion, mais risque de poser un problème s'il tombe au début du nombre affiché (il faut alors lui additionner une virgule) ; ce traitement général est sans doute très gourmand en pas de programme et de plus, rien ne garantit qu'un zéro ne fait pas partie du nombre (sauf la succession croissante des nombres, bien sûr ; à cette condition, cette solution est envisageable).

P.-S. : au sujet du formatage en sortie (l'impression), je crois que la lecture et le programme seront facilités par une structure de ce type :

Code : Tout sélectionner

 2.00003 ***
 5.00007 ***
11.00013 ***
17.00019 ***
etc.
car l'alignement se fera à droite (de mémoire).
Modifié en dernier par Marge le 01 mars 2018 18:47, modifié 2 fois.
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 : 3400
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: A faire comme Jürgen Keller

Message par C.Ret »

L'avantage des nombres premiers c'est qu'il n'y a pas de "zéros" en fin de nombre !


J'avais écrit (pour SHARP PC1211, HP-28S, HP15C et HP-41C) des programmes qui mémorisaient les 25 premiers facteurs premier au fur et à mesure de l'avancement de l'impression/affichage de la grande liste.
Mais ce n'est peut-être pas une bonne idée.

En effet, pour gagner du temps lors de l'exécution du programme ou de l'impression, on peut mettre les 23/24 premiers facteurs premiers en mémoire. Soit manuellement, soit à l'aide d'un sous-programme.

Dans ce cas, pour aller jusqu'à 10'000, il est possible d'imprimer 2, puis 3 avant les 23 facteurs mémorisés allant 5 à 97. La détermination à proprement parler ne commencera alors qu'à partir de 101

Mais ne serons-nous pas accusé d'avoir alors triché, car en fait notre temps d'exécution ne tiendra pas compte du temps économisé à déterminer les 23 facteurs mémorisés ??
Modifié en dernier par C.Ret le 01 mars 2018 18:59, modifié 3 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 : 6167
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge »

C.Ret a écrit : 01 mars 2018 18:44 L'avantage des nombres premiers c'est qu'il n'y a pas de "zéros" en fin de nombre !
Oui, bien sûr, ni au début, mais il y en a à l'intérieur.
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
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6167
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge »

Mais ne serons-nous pas accusé d'avoir alors triché, car en fait notre temps d'exécution ne tiendra pas compte du temps économisé à déterminer les 23 facteurs mémorisés ??
En fait je ne compte pas introduire manuellement ces premiers nombres, ils seront calculés. Le seul ne l'étant pas étant le 2, sans doute.
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 : 3400
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: A faire comme Jürgen Keller

Message par C.Ret »

Bien.

J'ai comme un doute, sur l'HP-19C, on peut avoir un programme de 30 ou 40 lignes et disposer de 24/25 registres ?

J'utilise mon HP-15C pour improviser un code compatible avec une HP-19, mais sur ce monstre de guerre, il suffit de faire 24 STO I DIM (i) pour garantir le nombre de registres. Cette opération évite que les fonctions évoluées, les matrices, les complexes ou la taille des programmes en mémoire ne viennent restreindre le nombre de registres alloués. La RAM totale de cette petite bête ne pose aucun problème pour notre problème.

Mais, est-ce aussi facile sur une "Second Generation" ?
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
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2917
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: A faire comme Jürgen Keller

Message par zpalm »

Sur 29C/19C la partition mémoire programme / registres est fixe: 98 pas de programme et 30 registres dont 14 accessibles uniquement de manière indirecte.
Répondre

Retourner vers « A quoi t'as joué hier ? »