A faire comme Jürgen Keller

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

Modérateur : Politburo

Répondre
Avatar de l’utilisateur
C.Ret
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1953
Inscription : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

A faire comme Jürgen Keller

Message par C.Ret » 28 févr. 2018 18:41

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.
Dernière édition par C.Ret le 15 mars 2018 11:42, édité 1 fois.
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803. | TI-57 LCD | TI-74 BasiCalc | TI-92 II | HP-28S + HP82240A | HP-41C + (2 memory + stat + IR) modules. | HP Prime Wireless Graphing Calculator |HP-15C | CASIO fx-602p + FA-1. .Sommaire des M.P.O.. . Sommaire du P.C.T.M. .

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1249
Inscription : 21 août 2016 19:04

Re: A faire comme Jürgen Keller

Message par Ben » 28 févr. 2018 19:07

Ca bouffre un rouleau de papier vite fait ça!

Avatar de l’utilisateur
C.Ret
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1953
Inscription : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: A faire comme Jürgen Keller

Message par C.Ret » 28 févr. 2018 20:03

En fait cela revient à imprimer 1229 nombres

Moi je n'ai eut assez de papier que pour les nombres premiers inférieur à 100 :
25th primes is 97.png
Impression IR sur HP82240A depuis HP41C
25th primes is 97.png (68.03 Kio) Consulté 3314 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 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803. | TI-57 LCD | TI-74 BasiCalc | TI-92 II | HP-28S + HP82240A | HP-41C + (2 memory + stat + IR) modules. | HP Prime Wireless Graphing Calculator |HP-15C | CASIO fx-602p + FA-1. .Sommaire des M.P.O.. . Sommaire du P.C.T.M. .

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2224
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Re: A faire comme Jürgen Keller

Message par jxano » 01 mars 2018 12:15

On peut se débrouiller pour imprimer les nombres sur plusieurs colonnes !
Programmeur abscons.

Avatar de l’utilisateur
Marge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4388
Inscription : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge » 01 mars 2018 15:42

jxano a écrit :
01 mars 2018 12: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 !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
Marge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4388
Inscription : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge » 01 mars 2018 16:33

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) Consulté 3259 fois
Qui fera mieux ? Je m'y essaierai ce dimanche...
3 hommes, 3 demis, un 3a... Magnéto, Serge !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
C.Ret
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1953
Inscription : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: A faire comme Jürgen Keller

Message par C.Ret » 01 mars 2018 19:08

Marge a écrit :
01 mars 2018 16: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 !?!
~~~~~~~~~~~~~~~   _______________
Dernière édition par C.Ret le 01 mars 2018 19:42, édité 4 fois.
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803. | TI-57 LCD | TI-74 BasiCalc | TI-92 II | HP-28S + HP82240A | HP-41C + (2 memory + stat + IR) modules. | HP Prime Wireless Graphing Calculator |HP-15C | CASIO fx-602p + FA-1. .Sommaire des M.P.O.. . Sommaire du P.C.T.M. .

Avatar de l’utilisateur
Marge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4388
Inscription : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge » 01 mars 2018 19:16

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 !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
bernouilli92
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2951
Inscription : 21 nov. 2012 14:03
Localisation : Ile de France

Re: A faire comme Jürgen Keller

Message par bernouilli92 » 01 mars 2018 19: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.
HP, Casio, Sharp, Psion, quelques TI et divers autres

Avatar de l’utilisateur
Marge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4388
Inscription : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge » 01 mars 2018 19:35

bernouilli92 a écrit :
01 mars 2018 19: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).
Dernière édition par Marge le 01 mars 2018 19:47, édité 2 fois.
3 hommes, 3 demis, un 3a... Magnéto, Serge !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
C.Ret
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1953
Inscription : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: A faire comme Jürgen Keller

Message par C.Ret » 01 mars 2018 19:44

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 ??
Dernière édition par C.Ret le 01 mars 2018 19:59, édité 3 fois.
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803. | TI-57 LCD | TI-74 BasiCalc | TI-92 II | HP-28S + HP82240A | HP-41C + (2 memory + stat + IR) modules. | HP Prime Wireless Graphing Calculator |HP-15C | CASIO fx-602p + FA-1. .Sommaire des M.P.O.. . Sommaire du P.C.T.M. .

Avatar de l’utilisateur
Marge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4388
Inscription : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge » 01 mars 2018 19:50

C.Ret a écrit :
01 mars 2018 19: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 !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
Marge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4388
Inscription : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A faire comme Jürgen Keller

Message par Marge » 01 mars 2018 20:10

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 !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
C.Ret
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1953
Inscription : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: A faire comme Jürgen Keller

Message par C.Ret » 01 mars 2018 21:09

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 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803. | TI-57 LCD | TI-74 BasiCalc | TI-92 II | HP-28S + HP82240A | HP-41C + (2 memory + stat + IR) modules. | HP Prime Wireless Graphing Calculator |HP-15C | CASIO fx-602p + FA-1. .Sommaire des M.P.O.. . Sommaire du P.C.T.M. .

Avatar de l’utilisateur
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2489
Inscription : 03 mai 2008 15:33
Localisation : Grenoble

Re: A faire comme Jürgen Keller

Message par zpalm » 01 mars 2018 21:26

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

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