Ethiopian multiplication: Difference between revisions
Content added Content deleted
(→{{header|Locomotive Basic}}: fixed) |
(Added Pascal) |
||
Line 1,720: | Line 1,720: | ||
d |
d |
||
};</lang> |
};</lang> |
||
=={{header|Pascal}}== |
|||
<lang pascal>program EthiopianMultiplication; |
|||
function Double(Number: Integer): Integer; |
|||
begin |
|||
Double := Number * 2 |
|||
end; |
|||
function Halve(Number: Integer): Integer; |
|||
begin |
|||
Halve := Number div 2 |
|||
end; |
|||
function Even(Number: Integer): Boolean; |
|||
begin |
|||
Even := Number mod 2 = 0 |
|||
end; |
|||
function Ethiopian(NumberA, NumberB: Integer): Integer; |
|||
begin |
|||
Ethiopian := 0; |
|||
while NumberA >= 1 do |
|||
begin |
|||
if not Even(NumberA) then |
|||
Ethiopian := Ethiopian + NumberB; |
|||
NumberA := Halve(NumberA); |
|||
NumberB := Double(NumberB) |
|||
end |
|||
end; |
|||
begin |
|||
Write(Ethiopian(17, 34)) |
|||
end.</lang> |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |