RosettaCodeData/Task/Jacobsthal-numbers/SETL/jacobsthal-numbers.setl
2023-12-16 21:33:55 -08:00

40 lines
919 B
Text

program jacobsthal_numbers;
print("First 30 Jacobsthal numbers:");
printseq([j n : n in [0..29]]);
print;
print("First 30 Jacobsthal-Lucas numbers:");
printseq([jl n : n in [0..29]]);
print;
print("First 20 Jacobsthal oblong numbers:");
printseq([jo n : n in [0..19]]);
print;
print("First 10 Jacobsthal primes:");
printseq([j n : n in [0..31] | prime j n]);
proc printseq(seq);
loop for n in seq do
nprint(lpad(str n, 14));
if (i +:= 1) mod 5 = 0 then print; end if;
end loop;
end proc;
op j(n);
return (2**n - (-1)**n) div 3;
end op;
op jl(n);
return 2**n + (-1)**n;
end op;
op jo(n);
return j n * j (n+1);
end op;
op prime(n);
if n<=4 then return n in {2,3}; end if;
return not exists d in [2..floor sqrt n] | n mod d = 0;
end op;
end program;