Webで学ぶセンター試験数学−BASICプログラミング > 素数

素数

素数

素数

 1と自分自身以外には約数をもたない自然数を素数といいます。ただし、1は素数に含めません。そのため、最小の素数は2になります。
素数の性質
  1. 自然数nSquare Root n以下のすべての素数で割りきれなければ、nは素数である。
  2. どの合成数も、ただ1通りの方法で素数の積の形に表すことができる。(素因数分解)

【問題】Nが素数 (prime) であるか判定するプログラム

[プログラム1]

  10  INPUT PROMPT "n=":N
  20  FOR I=2 TO N-1
  30      IF ________________ THEN
  40          PRINT N;"is not a prime."
  50          GOTO 90
  60      END IF
  70  NEXT I
  80  PRINT N;"is a prime."
  90  END

[設問1]

 空欄を埋めてプログラム1を完成させて実行しなさい。ただし、30行目の空欄には「NがIで割り切れる。」という条件文が入ります。

[解答1]

[解説1]

 設問1で確認したように、プログラム1はNが素数であるか正しく判定することができます。しかし、プログラム1にはいくらか無駄があります。

 その1つとして、実際には2〜N-1の自然数で割り切れるかどうか確かめなくてもNが素数であるか判定できることがあげられます。素数の性質1から、2〜Square Root Nの自然数で割りきれるかどうか確かめるだけでよいのです。

 そこで、プログラム1を書き換え、プログラム2としました。

[プログラム2]

  10  INPUT PROMPT "n=":N
  20  FOR I=2 TO ______
  30      IF ________________ THEN
  40          PRINT N;"is not a prime."
  50          GOTO 90
  60      END IF
  70  NEXT I
  80  PRINT N;"is a prime."
  90  END

[設問2]

 空欄を埋めてプログラム2を完成させなさい。その後、実行してプログラム1と同様に正しく動作することを確認しなさい。ただし、30行目にはプログラム1と同じ条件文が入ります。

[解答2]

[プログラム3]

  10  INPUT PROMPT "n=":N
  13  IF N=2 THEN GOTO 80
  16  IF N-INT(N/2)*2=0 THEN GOTO 40
  20  FOR I=3 TO ______ STEP 2
  30      IF ________________ THEN
  40          PRINT N;"is not a prime."
  50          GOTO 90
  60      END IF
  70  NEXT I
  80  PRINT N;"is a prime."
  90  END

※掲載していたプログラムに間違いがあったため、2009/8/2に修正しました。申し訳ございませんでした。

[設問3(発展)]

 プログラム3は、プログラム2を改良して処理の効率化(高速化)を図ったアルゴリズムである。このことについて説明しなさい。ただし、20行目と30行目の空欄は、それぞれプログラム2の20行目と30行目の空欄と同じ式が入ります。

[解答3]

アルゴリズム

 コンピュータの行う処理の手順を示したものをプログラムといい、その処理の手順をアルゴリズムと呼びます。

<< 前のページトップページ次のページ >>
inserted by FC2 system