基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成14年 秋期 基本情報技術者 午後 問06
問06   C言語

〔プログラムの説明〕

(1) 自然数 num(num≧2)を素因数に分解し, 結果を次の例のように印字するプログラムである。

例1.自然数 12 を入力した場合

    数値(2以上の自然数)を入力してください。 : 12

    12 = 2 × 2 × 3

例2.自然数3を入力した場合

    数値(2以上の自然数)を入力してください。 : 3

    3 = 素数

(2) 素因数分解及び素数の判定手順は,次のとおりである。

@ 変数 factor の値を2から始めて1ずつ増やしながら, num を factor で割った結果が factor 以上である間,Aを実行する。

A num が factor で割り切れる場合,次の処理を num が factor で割り切れなくなるまで繰り返す。
(a) factor の値を素因数として抽出する。
(b) num を factor で割った商を新たな num とする。

B 最終的に割り切る factor がなかった場合には,num は素数であると判定する。

(3) このプログラムでは,(2) の手順@ での繰返し処理の回数を減らすために, まず最初に自然数 num が2の倍数であるかどうかを判定する。 num が2の倍数の場合には,(2) の手順A によって,最初に2の因子をすべて抽出する。 続いて,変数 factor の値を,3から始めて2ずつ増やしながら, num を factor で割った結果が factor 以上である間,素因数の抽出を繰り返す。

〔プログラム〕

(行番号)
 1  #include <stdio.h>
 2  #define  TRUE  1
 3  #define  FALSE 0    
 4  main()
 5  {
 6      int num, prime = TRUE, factor = 2;
 7      printf( "数値(2以上の自然数)を入力してください。 : " );
 8      scanf( "%d", &num );
 9      printf( "%d =", num );
10      if ( num != factor )  
11          while ( num % factor == 0 ) { /*  数値が2の倍数? */
12              if ( prime == FALSE ) printf( " ×" );
13              printf( " %d", factor );
14              ;
15              prime = FALSE;
16          }
17      factor++;
18      while () {
19          while ( num % factor == 0 ) {
20              if ( prime == FALSE ) printf( " ×" );
21              printf( " %d", factor );
22              ;
23              prime = FALSE;
24          }
25          ;
26      }
27      if ( prime == TRUE ) printf( " 素数\n" );
28      else if ( num > 1 ) printf( " × %d\n",  );
29      else printf( "\n" );
30  }

基本情報技術者試験


設問  プログラム中の に入れる正しい答えを, 解答群の中から選べ。

a,c に関する解答群

ア factor--       イ factor += 2    ウ num /= factor

エ num %= factor    オ prime = FALSE    カ prime = TRUE

b に関する解答群

ア num / factor >= factor    イ num % factor != 0

ウ prime == FALSE    エ prime == TRUE

d に関する解答群

ア factor       イ num / factor

ウ num % factor    エ num

オ prime

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます

[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]