Magnanimous numbers: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: optimized the GENP subroutine.) |
(add PicoLisp) |
||
Line 1,148: | Line 1,148: | ||
magnanimous numbers[241..250]: {17992,19972,20209,20261,20861,22061,22201,22801,22885,24407} |
magnanimous numbers[241..250]: {17992,19972,20209,20261,20861,22061,22201,22801,22885,24407} |
||
magnanimous numbers[391..400]: {486685,488489,515116,533176,551558,559952,595592,595598,600881,602081} |
magnanimous numbers[391..400]: {486685,488489,515116,533176,551558,559952,595592,595598,600881,602081} |
||
</pre> |
|||
=={{header|PicoLisp}}== |
|||
<lang PicoLisp>(de **Mod (X Y N) |
|||
(let M 1 |
|||
(loop |
|||
(when (bit? 1 Y) |
|||
(setq M (% (* M X) N)) ) |
|||
(T (=0 (setq Y (>> 1 Y))) |
|||
M ) |
|||
(setq X (% (* X X) N)) ) ) ) |
|||
(de isprime (N) |
|||
(cache '(NIL) N |
|||
(if (== N 2) |
|||
T |
|||
(and |
|||
(> N 1) |
|||
(bit? 1 N) |
|||
(let (Q (dec N) N1 (dec N) K 0 X) |
|||
(until (bit? 1 Q) |
|||
(setq |
|||
Q (>> 1 Q) |
|||
K (inc K) ) ) |
|||
(catch 'composite |
|||
(do 16 |
|||
(loop |
|||
(setq X |
|||
(**Mod |
|||
(rand 2 (min (dec N) 1000000000000)) |
|||
Q |
|||
N ) ) |
|||
(T (or (=1 X) (= X N1))) |
|||
(T |
|||
(do K |
|||
(setq X (**Mod X 2 N)) |
|||
(when (=1 X) (throw 'composite)) |
|||
(T (= X N1) T) ) ) |
|||
(throw 'composite) ) ) |
|||
(throw 'composite T) ) ) ) ) ) ) |
|||
(de numbers (N) |
|||
(let (P 10 Q N) |
|||
(make |
|||
(until (> 10 Q) |
|||
(link |
|||
(+ |
|||
(setq Q (/ N P)) |
|||
(% N P) ) ) |
|||
(setq P (* P 10)) ) ) ) ) |
|||
(de ismagna (N) |
|||
(if (> 10 N) |
|||
T |
|||
(fully isprime (numbers N)) ) ) |
|||
(let (C 0 N 0 Lst) |
|||
(setq Lst |
|||
(make |
|||
(loop |
|||
(T (== C 401)) |
|||
(when (ismagna N) |
|||
(link N) |
|||
(inc 'C) ) |
|||
(inc 'N) ) ) ) |
|||
(println (head 45 Lst)) |
|||
(println (head 10 (nth Lst 241))) |
|||
(println (head 10 (nth Lst 391))) )</lang> |
|||
{{out}} |
|||
<pre> |
|||
(0 1 2 3 4 5 6 7 8 9 11 12 14 16 20 21 23 25 29 30 32 34 38 41 43 47 49 50 52 56 58 61 65 67 70 74 76 83 85 89 92 94 98 101 110) |
|||
(17992 19972 20209 20261 20861 22061 22201 22801 22885 24407) |
|||
(486685 488489 515116 533176 551558 559952 595592 595598 600881 602081) |
|||
</pre> |
</pre> |
||