商と余りのプログラム
十進BASIC_算数 へ戻る
大学生のための数学 へ戻る
2013.02.19


十進BASIC には、 次のような関数たちが標準装備されています。
    INT ( a ) :  に作用して を超えない最大の整数を取り出す。
    MOD ( a, b ) :  に作用して で割った余りを取り出す。

MOD ( a, b ) は、 INT ( a ) を使って作ることができます。 次のようになります。
    MOD ( a, b ) = a − b * INT ( a / b )

さて、 これらの関数を使って、 次のような機能を持ったプログラムを作ることができます。

偶数と奇数を判別するプログラム ( その1 )
10 INPUT PROMPT " 偶数か奇数かを判別します。自然数を入力してください。": n
20 PRINT " "
30 LET C = MOD ( n, 2 )
40 IF C = 0 THEN GOTO 60
50 IF C = 1 THEN GOTO 80
60 PRINT n ; " は偶数です。"
70 GOTO 90
80 PRINT n ; " は奇数です。"
90 PRINT " "
100 END



偶数か奇数かを判別するプログラム ( その2 )
10 INPUT PROMPT " 偶数か奇数かを判別します。自然数を入力してください。 ": n
20 PRINT
30 IF INT ( n/2 ) * 2 = n THEN GOTO 40 ELSE GOTO 60
40 PRINT n ;" は偶数です。"
50 GOTO 70
60 PRINT n ;" は奇数です。"
70 PRINT
80 END



四捨五入のプログラム
10 INPUT PROMPT " 小数点第4以下を四捨五入します。 小数を入力してください。": n
20 PRINT " "
30 LET C = INT ( 1000 * n + 0.5 ) / 1000
40 PRINT n
50 PRINT " ↓"
60 PRINT C
70 PRINT " "
80 END



素因数分解するプログラム
10 INPUT PROMPT " 素因数分解したい数を入力してください。": n
20 LET m = INT ( SQR(n) )
30 FOR I = 2 TO m
40   IF MOD ( n, I ) = 0 THEN
50   PRINT I;"×";
60   LET n = n/I
70   GOTO 20
80   END IF
90  NEXT I
100 PRINT n
110 END



商と余りを求めるプログラム ( その1 )
10 INPUT PROMPT " 割られる方の自然数は? ": n
20 INPUT PROMPT " 割る方の自然数は? ": m
30 LET a = INT ( n/m )
40 LET b = MOD ( n, m )
50 PRINT 60 PRINT n ;"÷"; m ;"="; a ;" あまり "; b
70 END



10進数を2進数に変換するプログラム
10 OPTION BASE 0
20 INPUT PROMPT " 2進数に変換したい数は? ( 255以下の自然数 ) ": n
30 PRINT " "
40 LET C = n
50 DIM B(15)
60 FOR I = 0 TO 7
70   LET B(I) = MOD ( C, 2 )
80   LET C = INT ( C / 2 )
90 NEXT I
100 FOR I = 7 TO 0 STEP -1
110   PRINT B(I);
120 NEXT I
130 END



素数かどうか判別するプログラム
10 INPUT PROMPT " 素数かどうか判別します。 2以上の自然数を入力してください。": N
20 PRINT
30 FOR I = 2 TO SQR(N)
40   IF MOD ( N,I ) = 0 THEN 100
50 NEXT I
60 PRINT N ;" は素数です。"
70 GOTO 300
100 PRINT N ;" は素数ではありません。"; I ;" が一番小さな約数です。"
200 PRINT N ;" を "; I ;" で割ると "; N/I ;" です。"
300 END



秒を 時:分:秒に 変換する
10 INPUT PROMPT " 秒 を 時: 分: 秒 に直します。 何秒? " :s
20 LET a = INT ( s / ( 60 * 60 ))
30 LET b = MOD ( s, 60 * 60 )
40 LET c = INT ( b / 60 )
50 LET d = MOD ( b, 60 )
60 PRINT a; " 時: " ;c; " 分: " ;d; " 秒"
70 END



金額 を 貨幣 や 硬貨 で束ねる
INPUT PROMPT "金額は? ( 1円 から 10万円 の範囲で )" : a
DATA 10000, 5000, 1000, 500, 100, 50, 10, 5, 1
DO
READ IF MISSING THEN EXIT DO : x
PRINT x ; " 円 が " ; INT ( a / x ); " 枚"
LET a = MOD ( a, x )
LOOP
END



  < コピぺ用の小窓 >

次のページへ進む