Maxima branch_5_49_base_416_g162a6093a https://maxima.sourceforge.io using Lisp SBCL 2.6.0.debian Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. | ||||||
|---|---|---|---|---|---|---|
| %i1 | crible_affiche3(n):=block(
[L,p,m,M0,M1,M2,M3],
local(genere_matrice),
genere_matrice(
liste):=block(
[nb_lignes,M,i,j,k],
nb_lignes
:max(1,
ceiling(
length(liste)/10)),
M:zeromatrix(nb_lignes,10),
for i thru nb_lignes do
(for j thru 10 do
M[i,j]:" "),
for k thru length(liste) do
M[ceiling(k/10),
k
-(ceiling(k/10)-1)
*10]
:liste[k],M),
L:makelist(k,k,1,n),
M0:genere_matrice(L),
print("Ce programme affiche les étapes de réalisation du crible d'Ératosthène"),
print("On trouve les nombres premiers en éliminant les multiples du premier nombre rencontré"),
print("Crible de départ",
M0),L[1]:"",
M1:genere_matrice(L),
print("1 n'est pas premier donc",
M1),
for p from 2 thru isqrt(n)
do
if member(p,L)
then (
for m from 2*p step
p thru n do
L[m]:"",
M2
:genere_matrice(L),
print("On garde",p,
" et on élimine ses multiples",
M2)),
M3:genere_matrice(L),
print("Crible d'Ératosthène finalisé donnant les nombres premiers inférieurs à ",
n),print(M3))
|
crible_affiche3(n) := block(
[L, p, m, M0, M1, M2, M3],
local(genere_matrice),
/* Définition locale de genere_matrice à l'intérieur du block */
genere_matrice(liste) := block(
[nb_lignes, M, i, j, k],
nb_lignes : max(1, ceiling(length(liste) / 10)),
M : zeromatrix(nb_lignes, 10),
for i : 1 thru nb_lignes do
for j : 1 thru 10 do
M[i, j] : " ",
for k : 1 thru length(liste) do
M[ceiling(k/10), k - (ceiling(k/10) - 1)*10] : liste[k],
M
),
/* Corps du crible */
L : makelist(k, k, 1, n),
M0 : genere_matrice(L),
print("Ce programme affiche les étapes de réalisation du crible d'Ératosthène"),
print("On trouve les nombres premiers en éliminant les multiples du premier nombre rencontré"),
print("Crible de départ", M0),
L[1] : "",
M1 : genere_matrice(L),
print("1 n'est pas premier donc", M1),
for p : 2 thru isqrt(n) do
if member(p, L) then (
for m : 2*p step p thru n do
L[m] : "",
M2 : genere_matrice(L),
print("On garde", p, " et on élimine ses multiples", M2)
),
M3 : genere_matrice(L),
print("Crible d'Ératosthène finalisé donnant les nombres premiers inférieurs à ", n),
print(M3)
)$ |
((MDEFINE SIMP) (($CRIBLE_AFFICHE3) $N)
((MPROG) ((MLIST) |$l| $P $M |$m0| |$m1| |$m2| |$m3|)
(($LOCAL) $GENERE_MATRICE)
((MDEFINE) (($GENERE_MATRICE) $LISTE)
((MPROG) ((MLIST) $NB_LIGNES |$m| $I $J $K)
((MSETQ) $NB_LIGNES
(($MAX) 1 (($CEILING) ((MQUOTIENT) (($LENGTH) $LISTE) 10))))
((MSETQ) |$m| (($ZEROMATRIX) $NB_LIGNES 10))
((MDO) $I 1 NIL NIL $NB_LIGNES NIL
((MDO) $J 1 NIL NIL 10 NIL ((MSETQ) ((|$m| ARRAY) $I $J) " ")))
((MDO) $K 1 NIL NIL (($LENGTH) $LISTE) NIL
((MSETQ)
((|$m| ARRAY) (($CEILING) ((MQUOTIENT) $K 10))
((MPLUS) $K
((MMINUS)
((MTIMES) ((MPLUS) (($CEILING) ((MQUOTIENT) $K 10)) ((MMINUS) 1))
10))))
(($LISTE ARRAY) $K)))
|$m|))
((MSETQ) |$l| (($MAKELIST) $K $K 1 $N))
((MSETQ) |$m0| (($GENERE_MATRICE) |$l|))
(($PRINT)
"Ce programme affiche les étapes de réalisation du crible d'Ératosthène")
(($PRINT)
"On trouve les nombres premiers en éliminant les multiples du premier nombre rencontré")
(($PRINT) "Crible de départ" |$m0|) ((MSETQ) ((|$l| ARRAY) 1) "")
((MSETQ) |$m1| (($GENERE_MATRICE) |$l|))
(($PRINT) "1 n'est pas premier donc" |$m1|)
((MDO) $P 2 NIL NIL (($ISQRT) $N) NIL
((MCOND) (($MEMBER) $P |$l|)
((MPROGN)
((MDO) $M ((MTIMES) 2 $P) $P NIL $N NIL ((MSETQ) ((|$l| ARRAY) $M) ""))
((MSETQ) |$m2| (($GENERE_MATRICE) |$l|))
(($PRINT) "On garde" $P " et on élimine ses multiples" |$m2|))
T $FALSE))
((MSETQ) |$m3| (($GENERE_MATRICE) |$l|))
(($PRINT)
"Crible d'Ératosthène finalisé donnant les nombres premiers inférieurs à "
$N)
(($PRINT) |$m3|))) | |||
| %i2 | crible_affiche3(100) |
crible_affiche3(100)$ |
(($CRIBLE_AFFICHE3 SIMP) 100) | |||
Ce programme affiche les étapes de réalisation du crible d'Ératosthène |
||||||
On trouve les nombres premiers en éliminant les multiples du premier nombre rencontré |
||||||
┌ ┐
│ 1 2 3 4 5 6 7 8 9 10 │
│ │
│ 11 12 13 14 15 16 17 18 19 20 │
│ │
│ 21 22 23 24 25 26 27 28 29 30 │
│ │
│ 31 32 33 34 35 36 37 38 39 40 │
│ │
│ 41 42 43 44 45 46 47 48 49 50 │
Crible de départ, │ │
│ 51 52 53 54 55 56 57 58 59 60 │
│ │
│ 61 62 63 64 65 66 67 68 69 70 │
│ │
│ 71 72 73 74 75 76 77 78 79 80 │
│ │
│ 81 82 83 84 85 86 87 88 89 90 │
│ │
│ 91 92 93 94 95 96 97 98 99 100 │
└ ┘
|
||||||
┌ ┐
│ 2 3 4 5 6 7 8 9 10 │
│ │
│ 11 12 13 14 15 16 17 18 19 20 │
│ │
│ 21 22 23 24 25 26 27 28 29 30 │
│ │
│ 31 32 33 34 35 36 37 38 39 40 │
│ │
│ 41 42 43 44 45 46 47 48 49 50 │
1 n'est pas premier donc, │ │
│ 51 52 53 54 55 56 57 58 59 60 │
│ │
│ 61 62 63 64 65 66 67 68 69 70 │
│ │
│ 71 72 73 74 75 76 77 78 79 80 │
│ │
│ 81 82 83 84 85 86 87 88 89 90 │
│ │
│ 91 92 93 94 95 96 97 98 99 100 │
└ ┘
|
||||||
┌ ┐
│ 2 3 5 7 9 │
│ │
│ 11 13 15 17 19 │
│ │
│ 21 23 25 27 29 │
│ │
│ 31 33 35 37 39 │
│ │
│ 41 43 45 47 49 │
On garde, 2, et on élimine ses multiples, │ │
│ 51 53 55 57 59 │
│ │
│ 61 63 65 67 69 │
│ │
│ 71 73 75 77 79 │
│ │
│ 81 83 85 87 89 │
│ │
│ 91 93 95 97 99 │
└ ┘
|
||||||
┌ ┐
│ 2 3 5 7 │
│ │
│ 11 13 17 19 │
│ │
│ 23 25 29 │
│ │
│ 31 35 37 │
│ │
│ 41 43 47 49 │
On garde, 3, et on élimine ses multiples, │ │
│ 53 55 59 │
│ │
│ 61 65 67 │
│ │
│ 71 73 77 79 │
│ │
│ 83 85 89 │
│ │
│ 91 95 97 │
└ ┘
|
||||||
┌ ┐
│ 2 3 5 7 │
│ │
│ 11 13 17 19 │
│ │
│ 23 29 │
│ │
│ 31 37 │
│ │
│ 41 43 47 49 │
On garde, 5, et on élimine ses multiples, │ │
│ 53 59 │
│ │
│ 61 67 │
│ │
│ 71 73 77 79 │
│ │
│ 83 89 │
│ │
│ 91 97 │
└ ┘
|
||||||
┌ ┐
│ 2 3 5 7 │
│ │
│ 11 13 17 19 │
│ │
│ 23 29 │
│ │
│ 31 37 │
│ │
│ 41 43 47 │
On garde, 7, et on élimine ses multiples, │ │
│ 53 59 │
│ │
│ 61 67 │
│ │
│ 71 73 79 │
│ │
│ 83 89 │
│ │
│ 97 │
└ ┘
|
||||||
Crible d'Ératosthène finalisé donnant les nombres premiers inférieurs à , 100 |
||||||
┌ ┐ │ 2 3 5 7 │ │ │ │ 11 13 17 19 │ │ │ │ 23 29 │ │ │ │ 31 37 │ │ │ │ 41 43 47 │ │ │ │ 53 59 │ │ │ │ 61 67 │ │ │ │ 71 73 79 │ │ │ │ 83 89 │ │ │ │ 97 │ └ ┘ |
||||||
Yamwi Source
Yamwi version: 2026-04-29Validate