54 lines
1.1 KiB
Text
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
|