Egyptian division: Difference between revisions
Content added Content deleted
(→{{header|BASIC}}: Added ANSI BASIC.) |
(→{{header|BASIC}}: Added Minimal BASIC.) |
||
Line 877: | Line 877: | ||
==={{header|Just BASIC}}=== |
==={{header|Just BASIC}}=== |
||
Same code as [[#QBasic|QBasic]] |
Same code as [[#QBasic|QBasic]] |
||
==={{header|Minimal BASIC}}=== |
|||
{{trans|ANSI BASIC}} |
|||
{{works with|BASICA}} |
|||
{{works with|Commodore BASIC|3.5}} |
|||
{{works with|MSX BASIC|2.1}} |
|||
<syntaxhighlight lang="basic"> |
|||
10 REM Egyptian division |
|||
20 DIM T(31,1) |
|||
30 REM D1 - dividend; D2 - divisor |
|||
40 LET D1 = 580 |
|||
50 LET D2 = 34 |
|||
60 REM ** Division |
|||
70 LET I = 0 |
|||
80 LET T(I,0) = 1 |
|||
90 LET T(I,1) = D2 |
|||
100 IF T(I,1) >= D1 THEN 160 |
|||
110 LET I = I+1 |
|||
120 LET T(I,0) = T(I-1,0)*2 |
|||
130 LET T(I,1) = T(I-1,1)*2 |
|||
140 GOTO 100 |
|||
150 REM A - answer; C - accumulator |
|||
160 LET I = I-1 |
|||
170 LET A = T(I,0) |
|||
180 LET C = T(I,1) |
|||
190 IF I <= 0 THEN 250 |
|||
200 LET I = I-1 |
|||
210 IF T(I,1)+C > D1 THEN 190 |
|||
220 LET A = A+T(I,0) |
|||
230 LET C = C+T(I,1) |
|||
240 GOTO 190 |
|||
250 REM ** Results |
|||
260 PRINT D1; "divided by"; D2; |
|||
270 PRINT "using Egyptian division"; |
|||
280 PRINT " returns"; A; "remainder"; D1-C |
|||
290 END |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
580 divided by 34 using Egyptian division returns 17 remainder 2 |
|||
</pre> |
|||
==={{header|MSX Basic}}=== |
==={{header|MSX Basic}}=== |