RosettaCodeData/Task/Jacobsthal-numbers/HPPPL/jacobsthal-numbers.hpppl
2026-04-30 12:34:36 -04:00

123 lines
1.8 KiB
Text

EXPORT Jacobsthal_numbers()
BEGIN
PRINT();
LOCAL R := "First 30 Jacobsthal numbers:";
PRINT(R);
LOCAL c, ni0, ni1, P, Q, t;
c := 0;
ni0 := 0;
ni1 := 1;
P := 1;
Q := -2;
L1 := {};
FOR J FROM 1 TO 30 DO
c := c + 1;
L1(J):=ni0;
ni0 := P*ni1 - Q*ni0;
t := ni0;
ni0 := ni1;
ni1 := t;
END;
PRINT(L1);
PRINT(" ");
LOCAL fi := 6;
LOCAL co := 5;
SALIDA(L1,R,fi,co);
LOCAL R := "First 30 Jacobsthal-Lucas numbers:";
PRINT(R);
c := 0;
ni0 := 2;
ni1 := 1;
L1 := {};
FOR J FROM 1 TO 30 DO
c := c + 1;
L1(J):=ni0;
ni0 := P*ni1 - Q*ni0;
t := ni0;
ni0 := ni1;
ni1 := t;
END;
PRINT(L1);
PRINT(" ");
fi := 6;
co := 5;
SALIDA(L1,R,fi,co);
LOCAL R := "First 20 Jacobsthal oblong numbers:";
PRINT(R);
c := 0;
ni0 := 0;
ni1 := 1;
L1 := {};
FOR J FROM 1 TO 20 DO
c := c + 1;
L1(J):=ni0*ni1;
ni0 := P*ni1 - Q*ni0;
t := ni0;
ni0 := ni1;
ni1 := t;
END;
PRINT(L1);
PRINT(" ");
fi := 5;
co := 4;
SALIDA(L1,R,fi,co);
LOCAL R := "First 10 Jacobsthal primes:";
PRINT (R);
c := 0;
ni0 := 0;
ni1 := 1;
L1 := {};
REPEAT
IF isprime(ni0) THEN
c := c + 1;
L1(c) := ni0;
END;
ni0 := P*ni1 - Q*ni0;
t := ni0;
ni0 := ni1;
ni1 := t;
UNTIL c == 10;
PRINT(L1);
LOCAL fi := 10;
LOCAL co := 1;
SALIDA(L1,R,fi,co);
END;
SALIDA(L1,R,fi,co)
BEGIN
LOCAL M := MatToList(list2mat(L1,co));
LOCAL fila := fi;
LOCAL col := co;
LOCAL x0 := 5;
LOCAL y0 := 137;
LOCAL dx;
CASE
IF co==4 THEN dx:=75 END;
IF co==5 THEN dx:=64 END;
END;
LOCAL dy := 17;
LOCAL x := {};
FOR I FROM 1 TO col DO
x(I) := x0 + (I-1)*dx;
END;
RECT_P();
TEXTOUT_P(R, x0, y0/10);
FOR I FROM 1 TO fila DO
FOR J FROM 1 TO col DO
TEXTOUT_P(
STRING(M[I,J]),
x[J],
y0 - (6-(I-1))*dy,
1
);
END;
END;
R := "ENTER";
TEXTOUT_P(R, 260, 210, 2);
WAIT(-1);
FREEZE;
END;