A faire comme Jürgen Keller
Modérateur : Politburo
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3421
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
A faire comme Jürgen Keller
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.
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.
Re: A faire comme Jürgen Keller
Ca bouffre un rouleau de papier vite fait ça!
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3421
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: A faire comme Jürgen Keller
En fait cela revient à imprimer 1229 nombres
Moi je n'ai eut assez de papier que pour les nombres premiers inférieur à 100 :
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.
Moi je n'ai eut assez de papier que pour les nombres premiers inférieur à 100 :
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.
-
- Fonctionne à 2400 bauds
- Messages : 2362
- Enregistré le : 16 févr. 2008 23:34
- Localisation : Paris 20ème
Re: A faire comme Jürgen Keller
On peut se débrouiller pour imprimer les nombres sur plusieurs colonnes !
Programmeur abscons.
- Marge
- Fonctionne à 14400 bauds
- Messages : 6189
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: A faire comme Jürgen Keller
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é. ♥ ♠
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é. ♥ ♠
- Marge
- Fonctionne à 14400 bauds
- Messages : 6189
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: A faire comme Jürgen Keller
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 :
Qui fera mieux ? Je m'y essaierai ce dimanche...
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 :
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é. ♥ ♠
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é. ♥ ♠
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3421
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: A faire comme Jürgen Keller
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: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.
[...]
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.
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.
- Marge
- Fonctionne à 14400 bauds
- Messages : 6189
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: A faire comme Jürgen Keller
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 ?
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é. ♥ ♠
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é. ♥ ♠
- bernouilli92
- Fonctionne à 14400 bauds
- Messages : 5268
- Enregistré le : 21 nov. 2012 13:03
- Localisation : Ile de France
Re: A faire comme Jürgen Keller
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
- Marge
- Fonctionne à 14400 bauds
- Messages : 6189
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: A faire comme Jürgen Keller
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 ?).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.
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.
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é. ♥ ♠
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é. ♥ ♠
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3421
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: A faire comme Jürgen Keller
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 ??
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.
- Marge
- Fonctionne à 14400 bauds
- Messages : 6189
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: A faire comme Jürgen Keller
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é. ♥ ♠
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é. ♥ ♠
- Marge
- Fonctionne à 14400 bauds
- Messages : 6189
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: A faire comme Jürgen Keller
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.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 ??
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é. ♥ ♠
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é. ♥ ♠
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3421
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: A faire comme Jürgen Keller
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" ?
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.
- zpalm
- Fonctionne à 9600 bauds
- Messages : 2934
- Enregistré le : 03 mai 2008 15:33
- Localisation : Grenoble
Re: A faire comme Jürgen Keller
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.