- (1)関数を利用しない場合
count = 0; prime[count][0] = 2; prime[count++][1] = 3; pr = 3; scanf("%d", &number); while (count <= number) { if ( <pr,pr+2> が双子素数になるか調べる) { prime[count][0] = pr; prime[count++][1] = pr + 2; } pr += 2; }- (2)関数による双子素数の判定
- <pr,pr+2> が双子素数かどうかを判定する関数をprime()とすると、その判定は次の様に行なえます。
if( prime(pr) && prime(pr+2)) { prとpr+2は双子素数 } else { 双子素数ではない }- (3)全体の構造
- 関数を用いた双子素数の計算プログラムの枠組は、以下の通りです。
[step1] 双子素数をカウントする変数 の初期化
[step2] 素数判定をする数(例えばpr)の初期化
[step3] 双子素数が指定された個数見つかるまで、以下を繰り返す[step4] 双子素数を表示する
- (3-1) prとpr+2が共に素数かどうかを判定する
- 素数ならば、見つけた双子素数のカウンタを+1増やす
- (3-2) prを+2増やす
ここで、prの初期値について考慮しなさい。