割り算のサンプル・プログラムです。
アルゴリズム
・「除数」場合の数×「商」場合の数 の検算を行います。
・除数、商、被除数が揃ったところで、筆算で途中結果を検証していきます。
!虫食い算
! a 除数 □□8□□ ← b 商
! ------------------
! □□ )□□□□□□□ ← c 被除数
! □□□ ← d
! ----------
! □□ ← e
! □□ ← f
! ----------
! □□□ ← g
! □□□ ← h
! --------
! 4 ← 余り
LET t0=TIME
DEF fnFIG(x,n)=MOD(INT(x/10^n),10) !n桁目の数を得る ※0:一の位、1:十の位、2:百の位、…
LET ANSWER_COUNT=0 !解答数
FOR a=10 TO 99 !除数
FOR b=10000 TO 99999 !商
IF fnFIG(b,2)<>8 THEN GOTO 100 !商の百の位は8か?
LET c=b*a + 4 !※余りを加算する
IF c<1000000 OR c>9999999 THEN GOTO 100 !被除数cは7桁の数?
LET d=fnFIG(b,4)*a !途中結果d
IF d<100 OR d>999 THEN GOTO 100 !3桁の数?
LET w=INT(c/10000) !※筆算を参照
LET e=(w-d)*100+fnFIG(c,3)*10+fnFIG(c,2) !途中結果e
IF e<10 OR e>99 THEN GOTO 100 !2桁の数?
LET f=fnFIG(b,2)*a !途中結果f
IF f<10 OR f>99 THEN GOTO 100 !2桁の数?
LET g=(e-f)*100+fnFIG(c,1)*10+fnFIG(c,0) !途中結果g
IF g<100 OR g>999 THEN GOTO 100 !3桁の数?
LET h=fnFIG(b,0)*a !途中結果h
IF h<100 OR h>999 THEN GOTO 100 !3桁の数?
IF g-h<>4 THEN GOTO 100 !余りは4か?
LET ANSWER_COUNT=ANSWER_COUNT+1 !解答数
PRINT "No.";ANSWER_COUNT
!結果の表示
PRINT USING " #####": b !商
PRINT " -----------"
PRINT USING " ## ) #######": a,c !除数、被除数
PRINT USING " ###": d
PRINT " -----"
PRINT USING " ##": e
PRINT USING " ##": f
PRINT " ----"
PRINT USING " ###": g
PRINT USING " ###": h
PRINT " ------"
PRINT " 4"
PRINT
100 !continue
NEXT b
200 !continue
NEXT a
PRINT "計算時間=";TIME-t0
END
参考 かけ算 No.698 [元記事へ]