Egyptian division: Difference between revisions

Added solution for Action!
(Added 11l)
(Added solution for Action!)
Line 341:
<pre>
580 divided by 34 using the Egyption method is 17 remainder 2
</pre>
 
=={{header|Action!}}==
<lang Action!>TYPE Answer=[CARD result,reminder]
 
PROC EgyptianDivision(CARD dividend,divisor Answer POINTER res)
DEFINE SIZE="16"
CARD ARRAY powers(SIZE),doublings(SIZE)
CARD power,doubling,accumulator
INT i,count
 
count=0 power=1 doubling=divisor
WHILE count<SIZE AND doubling<=dividend
DO
powers(count)=power
doublings(count)=doubling
count==+1
power==LSH 1
doubling==LSH 1
OD
 
i=count-1
res.result=0
accumulator=0
WHILE i>=0
DO
IF accumulator+doublings(i)<=dividend THEN
accumulator==+doublings(i)
res.result==+powers(i)
FI
i==-1
OD
res.reminder=dividend-accumulator
RETURN
 
PROC Main()
CARD dividend=[580],divisor=[34]
Answer res
 
EgyptianDivision(dividend,divisor,res)
PrintF("%U / %U = %U reminder %U",dividend,divisor,res.result,res.reminder)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Egyptian_division.png Screenshot from Atari 8-bit computer]
<pre>
580 / 34 = 17 reminder 2
</pre>
 
Anonymous user