C言語

【大学の課題で出るC言語】素数判定と素数の数を求める(関数アリ)

大学の課題で出るC言語。素数判定と素数の個数

どうも多浪Fランぼっち底辺大学生です。

C言語初心者学習者が少し頭を抱えてしまう、素数判定素数の個数を求めるプログラムを書いていきます。

入力した数字が素数か?
入力した数字までに含まれる素数の個数はいくつか?
というプログラムを作りたい!!

けど、・・・・よく分からんわ(´・ω・)

といった悩みを解消しましょうね。

 

この記事の内容
  • 任意の数字を素数判定する
  • 任意の数字までに含まれる素数の個数を調べる
  • 関数を使ってプログラムを書いてみる

上記の項目について知りたい人は読み進めて下さいね( `ー´)ノ

それでは見ていきましょう。

プログラムを書く前に「素数」を認識する

素数とは何か、正の整数nを用いて説明します。

nが素数である条件は1とnの2つの数でしか割り切れないことです。
※なので”1”は自動的に素数ではないことになります。

  • 「2」は1と2で割り切れるので”素数”
  • 「3」は1と3で割り切れるので”素数”
  • 「4」は1と2と4で割り切れるので”素数ではない”
  • 「5」は1と5で割り切れるので”素数”
  • 「6」は1と2と3と6で割り切れるので”素数ではない”

っと、まぁこんな感じです。

素数判定における考え方

素数判定をする処理には以下の2つの関数が必須です。

  1. 繰り返し処理(ループ):for() 又は while()
  2. 条件分岐 : if()

 特定の数nが素数であるのかを判定するなら、nを{2~(n-1)}で1つずつ割った余りを調べます。

  • この間に余りが0になる場合は”素数ではない”
  •   ”” 余りが0にならない場合は”素数である”

素数判定のソースコードと実行結果

今回は素数判定用の変数flagを用いました。

  • 素数ならば:flag=0
  • 素数でないならば:flag=1

素数判定のソースコードは以下になります。

そして、実行結果は以下になります。

整数を入力してください:8
8は素数ではありません

整数を入力してください:23
23は素数です

整数を入力してください:100
100は素数ではありません

整数を入力してください:1001
1001は素数ではありません

整数を入力してください:2
2は素数です

特に1001は7で割り切れるので素数ではないす。

自分でも確認してみて下さいね( ^ω^)

因みに、この記事で扱うC言語の素数判定や素数の数を数えるプログラムは、

新・明解C言語で学ぶアルゴリズムとデータ構造」に記載されているので、購入してみて下さい。

C言語を学ぶ上で買って損は無いですよ!!

 

nまでの素数の数を求める考え方

素数判定のコードに付け加えをすることで、素数の個数を求めることが出来ます。

  • 素数の個数を格納する為の変数countを宣言
  • 二重ループにすることで2~(n-1)までの範囲に素数がいくつ存在するか確認

nまでの素数の数を求めるソースコードと実行結果

二重ループにすることでどんな処理が行われるのか以下の表を見てみると分かると思います。

二重ループの処理

縦の要素”i”が素数であるかどうかの判定で、○なら割り切れる・×なら割り切れないと表しました。

すなわち、○が1つとして無い要素(数)が素数であることになります。

 

そして、実行結果は以下の様になります。

数字を入力してください:100
100までの素数の数は25です

100までの素数は(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97)の計25個なので正しい結果になりましたね( ^ω^)

プログラミングの参考書
【大学生の課題で出るC言語】持っておくべきおすすめの参考書どうも多浪Fランぼっち底辺大学生です。 今回はC言語プログラミングを履修している大学生におすすめの参考書の紹介をします。 ...

自分で関数を作って素数判定する

それでは関数を用いた場合のプログラムについて見て行きましょう。

※(以下のソースコードは、【素数判定】と【素数の個数】を調べるプログラムです)

このように記述することで、同様な結果が得られます。

素数判定したい数字を入力 :100
入力された数字は素数ではありません
1~100までに含まれる素数の個数は 25コ です。

 

素数判定したい数字を入力 :20
入力された数字は素数ではありません
1~20までに含まれる素数の個数は 8コ です。

 

素数判定したい数字を入力 :101
入力された数字は素数です
1~101までに含まれる素数の個数は 25コ です。

プロトタイプ宣言した関数は prime_judge(int num) と get_prime_count(int num)の2つです。

prime_judge(int num)では、素数であるかの判定を行います。

get_prime_count(int num)では、引数の値までに含まれる素数の個数をカウントしていますね。

もし、関数に関する知識が分からないのであれば以下の参考書を手に取って学習してみて下さい。

かな~り分かりやすいですよ(‘ω’)ノ

 


まとめ

プログラムを記述する以前に素数の性質を理解する必要がある。

また、二重ループなどの処理に慣れないのなら表や数式を書いてみて理解を深めましょう。

以上です。

DMMブックス70%オフキャンペーン
DMMブックスが70%オフの激安キャンペーン中【おまいら急げ!】どうも多浪Fランぼっち底辺大学生です。 今回は【DMMブックス】で取り揃えている電子書籍作品が、 なんと!全作品70...
無料で映画やアニメ・ドラマを見る方法
暇を潰すに持ってこいのおすすめ【無料】動画アプリを一挙紹介するわ前から見たかった映画やアニメ、新たな趣味を開拓したいのなら映像配信サービスがおすすめです。それも無料で利用できるって言うんですから。...
大学生におすすめAmazonPrimeStudent
【AmazonPrimeStudent】大学生だけが利用できるおすすめな会員制度AmazonのPrime Student会員サービスは大学生だけが獲得できる特典です。プライムビデオやプライムミュージックが利用出来たり、ポイント還元が大幅に大きくなるのでおすすめです。...
人気ブログランキング