RosettaCodeData/Task/Egyptian-division/FutureBasic/egyptian-division.basic

33 lines
655 B
Plaintext

void local fn EgyptianDivision
int table(32, 2)
int i = 1, dividend = 580, divisor = 34
int answer, accumulator
table(i, 1) = 1
table(i, 2) = divisor
while ( table( i, 2 ) < dividend )
i++
table(i, 1) = table(i - 1, 1) * 2
table(i, 2) = table(i - 1, 2) * 2
wend
i--
answer = table(i, 1)
accumulator = table(i, 2)
while ( i > 1 )
i--
if table(i, 2) + accumulator <= dividend
answer += table(i, 1)
accumulator += table(i, 2)
end if
wend
printf @"Using Egyptian Division %d / %d = %d remainder %d", dividend, divisor, answer, dividend - accumulator
end fn
fn EgyptianDivision
HandleEvents