RosettaCodeData/Task/Egyptian-division/Liberty-BASIC/egyptian-division.basic
2026-04-30 12:34:36 -04:00

54 lines
1.1 KiB
Text

print "EGYPTIAN DIVISION"
print
input "Enter value of dividend: "; dividend
input "Enter value of divisor : "; divisor
print
print
resp=divisor
cont=0
do
cont=cont+1
resp=resp*2
loop while resp<dividend
dim table1(cont,2)
dim table2(cont,2)
print " 2^n", "divis*2^n"
print "--------", "---------"
for i=1 to cont
table1(i,1)=2^(i-1)
table1(i,2)=divisor*2^(i-1)
print tab(3); table1(i,1); tab(17); table1(i,2)
next i
print
print
answer=table1(cont, 1)
accum=table1(cont, 2)
table2(cont, 1)=answer
table2(cont, 2)=accum
for i=cont-1 to 1 step -1
if accum+table1(i, 2)<=dividend then
answer=answer+table1(i, 1)
accum=accum+table1(i, 2)
table2(i, 1)=answer
table2(i, 2)=accum
else
table2(i, 1)=answer
table2(i, 2)=accum
end if
next i
print "pow_of_2", "doublings", " answer", "accumul"
print "--------", "--------", "--------", "--------"
for i=1 to cont
print tab(3); table1(i,1); tab(17); table1(i,2); tab(31); table2(i,1); tab(45); table2(i,2)
next i
print
print
print "RESULT: "; dividend; "/"; divisor; " = "; answer; ", remainder = "; dividend - accum; " ("; dividend; " - "; accum; ")"
end