Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【C言語】forループを使って1〜Nまでの素数をすべて表示するプログラム


問題

実行時にユーザーが入力した値nに対して、1からnの間に存在するすべての素数を表示するC言語プログラムを作成しましょう。

解決策

ここでは、forループを使用して、実行時にユーザーから与えられた値nまでの範囲内にある素数をすべて検出・表示する方法を解説します。

なお、素数とは、1とその数自身以外に約数を持たない、1より大きい自然数のことです。具体的には、2、3、5、7、11、13などが該当します。

アルゴリズム

以下は、実行時にユーザーが入力した値nまでの素数をすべて表示するためのアルゴリズムです。

ステップ1 − nの値を入力として読み込む

ステップ2 − カウンタ変数countを0で初期化する

ステップ3 − i = 2からnまで繰り返し処理を行う

   a. j = 1からiまで繰り返す
   b. もし i % j == 0 ならば
   c. count をインクリメントする
   d. もし count が 2 と等しければ
   e. i の値を出力する

フローチャート

以下のフローチャートは、1からnまでの素数を表示するCプログラムの処理の流れを視覚的に表したものです。

【C言語】forループを使って1〜Nまでの素数をすべて表示するプログラム

サンプルプログラム

以下は、実行時にユーザーが入力した値nまでの素数をすべて表示するC言語プログラムです。

#include<stdio.h>
void main(){
   int i, num, n, count;
   printf("Enter the range: \n");
   scanf("%d", &n);
   printf("The prime numbers in between the range 1 to %d:",n);
   for(num = 1;num<=n;num++){
      count = 0;
      for(i=2;i<=num/2;i++){
         if(num%i==0){
            count++;
         break;
    }
  }
   if(count==0 && num!= 1)
      printf("%d ",num);
   }
}

プログラムのポイント

  • 外側のforループで、1からnまでの各数値(num)を順番にチェックします。
  • 内側のforループでは、2からnum/2までの値で割り切れるかどうかを判定します。割り切れる数が見つかった時点でcountを増やし、break文で内側のループを抜けます。
  • countが0のまま(=約数が存在しない)であり、かつnumが1でない場合、その数は素数であるため画面に出力されます。

実行結果

上記のプログラムをコンパイルして実行すると、以下のような出力が得られます。

Enter the range:50
The prime numbers in between the range 1 to 50:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

このように、範囲として「50」を入力すると、1から50までの間に存在する15個の素数が正しく表示されます。

  1. C言語でアームストロング数を判定するプログラムの作成方法

    アームストロング数とは? 本記事では、入力された整数 n がアームストロング数(Armstrong number)であるかどうかを判定するCプログラムについて解説します。 アームストロング数とは、各桁の数字をそれぞれ「桁数(位数)」でべき乗し、その総和が元の数値と等しくなる数のことです。例えば、4桁の数 1634 は 14 + 64 + 34 + 44 = 1 + 1296 + 81 + 256 = 1634 となるため、アームストロング数です。 アームストロング数を求める基本的な考え方は、次の式のように表せます。 計算式: wxyz…. = pow(w, n) + pow(x, n) + p

  2. 指定した範囲内のすべての素数を出力するPythonプログラム

    この記事では、以下の問題文に対する解決方法について学んでいきます。 問題文 ある区間が与えられたとき、その範囲内に含まれるすべての素数を求めて出力する必要があります。 ここでは、素数の基本的な定義に基づいた全探索(ブルートフォース)によるアプローチを紹介します。素数とは、「1とその数自身のみを約数として持ち、それ以外の数を約数に持たない自然数」のことです。 この定義に基づき、各数値が素数の条件を満たしているかどうかを判定し、条件が真(True)と評価されるたびに出力処理を行います。 それでは、実際の実装例を見ていきましょう。 実装例 start = 1 end = 37 for val in