1. feladat

Az union és a minus szokványos halmazműveletek.

> select(isprime, {seq(i, i=3..9999)}) minus ({seq(i^2-2, i=1..100)}
  union {seq(i^2-1, i=1..100)} union {seq(i^2+1, i=1..100)} union

  {seq(i^2+2, i=1..100)});

{13, 19, 29, 31, 41, 43, 53, 59, 61, 67, 71, 73, 89, 97, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 173, 179, 181, 191, 193, 199, 211, 229, 233, 239, 241, 251, 263, 269, 271, 277, 281...

Csak eddigi módszerekkel:

> l:={}:
for i from 1 to 9999 do

if isprime(i) and floor(sqrt(i-2))^2 <> i-2 and floor(sqrt(i-1))^2 <> i-1 and floor(sqrt(i+1))^2 <> i+1 and floor(sqrt(i+2))^2 <> i+2 then

 l:={op(l),i};

end if;

end do:

l;

{7, 13, 19, 23, 29, 31, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 89, 97, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 199, 211, 223, 229, 233, 239, 241, 251...

2. feladat

> l:=[0,0,1,1,0,1,0,1];

l := [0, 0, 1, 1, 0, 1, 0, 1]

> m:=0: k:=0:
i:=1:

while i < nops(l) do

if l[i] = 0 and l[i+1] = 1 then

      k:=k+1:

      i:=i+2;

    else

      k:=0:

      i:=i+1;

    fi:

    m:=max(m,k):

  od:

  m;

2

3. feladat

> vissza := proc(l::list)
    local n,i:

    n:=0:

    for i from 1 to nops(l) do

      n:=2*n:

      n:=n+l[i]:

    od:

    n;

  end proc:

> vissza([1,1,0]);

6

> vissza([1]);

1

> vissza([1,1]);

3

Máshogyan: a lineáris algebra részben volt egy példa, hogy egy mátrixot vektorral hogyan kell szorozni. Két vektor skaláis szorzatát sem nehéz venni, ami rögtön adja a megoldást:

> vissza2 := proc(l::list)
local i;

evalm(l&*[seq(2^(nops(l)-i),i=1..nops(l))]);

end proc;

vissza2 := proc (l::list) local i; evalm(`&*`(l, [seq(2^(nops(l)-i), i = (1 .. nops(l)))])) end proc

> vissza2([1,1,0]);

6

> vissza2([1,1]);

3