Path: ...!npeer.as286.net!npeer-ng0.as286.net!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!cleanfeed4-a.proxad.net!nnrp6-1.free.fr!not-for-mail Date: Sat, 9 Nov 2024 19:39:17 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: =?UTF-8?Q?Re=3A_Le_calcul_de_la_racine_carr=C3=A9=2E=2E=2E_pour_des?= =?UTF-8?Q?_nuls_=3A=29?= Newsgroups: fr.sci.maths References: <672bcce0$0$28508$426a74cc@news.free.fr> <672ce7d7$0$12934$426a74cc@news.free.fr> <672ea1f1$0$16817$426a34cc@news.free.fr> <672f8598$0$11455$426a74cc@news.free.fr> Content-Language: fr From: Michel Talon In-Reply-To: <672f8598$0$11455$426a74cc@news.free.fr> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Lines: 110 Message-ID: <672fac55$0$16825$426a34cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 09 Nov 2024 19:39:17 CET NNTP-Posting-Host: 88.181.102.49 X-Trace: 1731177557 news-4.free.fr 16825 88.181.102.49:23950 X-Complaints-To: abuse@proxad.net Bytes: 5001 Le 09/11/2024 à 16:53, Samuel Devulder a écrit : > Le 09/11/2024 à 13:34, efji a écrit : >> Ce n'est pas ce que je dis, j'ai juste dit que ça choque mes habitudes >> de vieux, mais pourquoi pas si on y gagne quelque chose. Mais en fait >> je ne vois pas ce qu'on y gagne 🙂 > > Une absence de typage rend les langages bien plus simples à l'usage. Il > s'agit de langages de script pas de programmation. On écrit pas une > application avec ca mais des maquettes pour tester rapidement un truc. > > Lua va assez loin dans la réduction du nombre de types de données puis > que tableaux et dictionnaires sont confondus, et à l'usage c'est très > agréable je dois bien avouer. > > sam. Et bien, pour passer de langages récents à un langage très ancien voici une solution avec Common Lisp (en fait sbcl) qui lui aussi a l'avantage d'un programme non typé (sauf si on déclare le type des variables) avec gestion automatique de la mémoire, possibilité de programmer pas à pas à la console, comme python ou lua, mais en outre est compilé automatiquement (avec sbcl) ce qui donne une vitesse d'exécution raisonnable, contrairement à python par exemple. Voici le programme: (defun print-bizarre-squares (N str) (let ((k 1) (l 10)) (dotimes (i N 'done) (let ((j (* i i))) (when (<= l j) (incf k) (setq l (* 10 l))) ;; Here 10^(k-1) <= j < 10^k, j has k digits (if (evenp k) (test-if-bizarre i j (expt 10 (/ k 2)) str)))))) (defun test-if-bizarre (i j l str) (multiple-value-bind (a b) (floor (/ j l)) (if (= i (+ a (* l b))) (format str " ~7d ~d ~%" i j)))) (defparameter N (expt 10 7)) ; 10^7 (with-open-file (str "list-of-bizarre" :direction :output :if-exists :supersede) (time (print-bizarre-squares N str))) Le résultat est écrit dans "list-of-bizarre" et le temps d'éxécution est imprimé. Sur ma machine (2993.03 BogoMIPS ) assez lente, j'obtiens: Evaluation took: 7.894 seconds of real time 7.891697 seconds of total run time (7.887671 user, 0.004026 system) [ Run times consist of 0.055 seconds GC time, and 7.837 seconds non-GC time. ] 99.97% CPU 11,815,133,039 processor cycles 486,145,312 bytes consed Finalement le résultat obtenu est: 9 81 45 2025 55 3025 99 9801 703 494209 999 998001 4950 24502500 5050 25502500 7272 52881984 7777 60481729 9999 99980001 77778 6049417284 82656 6832014336 95121 9048004641 99999 9999800001 318682 101558217124 329967 108878221089 351352 123448227904 356643 127194229449 390313 152344237969 461539 213018248521 466830 217930248900 499500 249500250000 500500 250500250000 533170 284270248900 538461 289940248521 609687 371718237969 643357 413908229449 648648 420744227904 670033 448944221089 681318 464194217124 791505 626480165025 812890 660790152100 818181 669420148761 851851 725650126201 857143 734694122449 961038 923594037444 994708 989444005264 999999 999998000001 4444444 19753082469136 4927941 24284602499481 5072059 25725782499481 5555556 30864202469136 9372385 87841600588225 9999999 99999980000001 -- Michel Talon