【第6回】演習(1)約数・素数
【第6回】演習(1)約数・素数

例題16 素数
2以上の自然数nが素数であるかを判定するプログラムを作れ。


(LIST)

1:  INPUT "n=";n

2:  k=2

3:  DO WHILE k<n

4:    r=n-k*INT(n/k)        '自然数nを自然数kで割ったときの商をqとすると

5:    IF r=0 THEN          '    q=INT(n/k)  ・・・(1)

6:      PRINT n;"は素数ではない" '余りをrとすると

7:    END              '    n=kq+r   ・・・(2)

8:    ENDIF             '(1)(2)より

9:    k=k+1             '    r=n-k*INT(n/k)

10:  LOOP

11:  PRINT n;"は素数である"

<類題16>200以下の自然数について素数を全て表示するプログラムを作れ。

(OUTPUT) 2, 3, 5, 7, 13, 17, ・・・, 199

例題17 最大公約数
2つの自然数a,b(a>b)の最大公約数を求めるプログラムを作れ。


(LIST)

1:  INPUT "a=";a

2:  INPUT "b=";b

3:  r=a MOD b          'aをbで割ったときの余りをrとする

4:  DO WHILE r<>0         'r<>0ならbを改めてa,rをbとして繰り返す

5:    a=b            'r=0ならG.C.Mをbとする

6:    b=r

7:    r=a MOD b

8:  LOOP

9:  PRINT "最大公約数は";b

<類題17>自然数nが与えられたとき、nの約数を表示するプログラムを作れ。

(OUTPUT) ?24  1, 2, 3, 4, 6, 8, 12, 24