• 締切済み

pascalの素数について

素数の問題がどうしても分からないため質問させて頂きます。 現在、Pascalで正整数nを入力して、n=1ならば2を出力するような、n番目の素数を出力するプログラムを作成せよという問題をしています。 授業では素数判別式 begin read(n); p:=ture; for j:=2 to n-1 do if nmod j=o then p:=false (var n,j;integer p:booleanとして) をならい入力した数nが素数かどうか判別するプログラムは作成することができました。 ただ実際この判別式をどう使えばいいのかがわかりません 詳しく解説してくださる方がいればよろしくお願いします。

みんなの回答

  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.1

そのPascalの環境で扱えるintegerの最大まで、授業で習った「判別式」を使って素数を調べるということにします。 「判別式」は、p:=TRUE; 以下の3行であることはおわかりですよね。授業ではread文で整数を読んでいますが、それをコンピュータに自動的にやらせては。 もう少し言えば、for文で、例えば変数xを2からintegerの最大まで、「判別式」を使って素数かどうか調べます。素数だったら数え、n番目になったらその素数xを出力してfor文を抜けます。 変数nの意味に注意して書き換えましょう。授業では素数かどうか判別する対象でしたが、問題では何番目の素数かの指定です。 for文の抜け方はわかりますか? ひょっとするとfor文の抜け方を習っていないかもしれませんね。その場合はfor文の代わりにwhile文などを使うとよいと思いますが、習っていますか? なお、投稿の際には実際のコードをコピーして貼り付けるようにしましょう。

関連するQ&A