Maxima Online

Help: Español, English Galego




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