33 lines
570 B
Text
33 lines
570 B
Text
' Ethiopian multiplication
|
|
DECLARE FUNCTION Half% (A AS INTEGER)
|
|
DECLARE FUNCTION Doub% (A AS INTEGER)
|
|
DECLARE FUNCTION IsEven% (A AS INTEGER)
|
|
|
|
DIM X AS INTEGER, Y AS INTEGER, OutP AS INTEGER
|
|
X = 17
|
|
Y = 34
|
|
DO
|
|
PRINT X,
|
|
IF NOT (IsEven(X)) THEN
|
|
OutP = OutP + Y
|
|
PRINT Y
|
|
ELSE
|
|
PRINT
|
|
END IF
|
|
IF X < 2 THEN EXIT DO
|
|
X = Half(X)
|
|
Y = Doub(Y)
|
|
LOOP
|
|
PRINT " =", OutP
|
|
|
|
FUNCTION Doub% (A AS INTEGER)
|
|
Doub% = A * 2
|
|
END FUNCTION
|
|
|
|
FUNCTION Half% (A AS INTEGER)
|
|
Half% = A \ 2
|
|
END FUNCTION
|
|
|
|
FUNCTION IsEven% (A AS INTEGER)
|
|
IsEven% = (A MOD 2) - 1
|
|
END FUNCTION
|