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

C言語で2つの区間の間にある素数を表示するプログラム

この記事では、C言語を使って、ユーザーが入力した2つの数値(区間)の間に存在する素数をすべて表示する方法を解説します。

アルゴリズムの考え方

まず、実行時にコンソールから2つの数値を入力します。次に、素数かどうかを判定するためのフラグ変数を宣言し、forループの条件を使って各数値が素数であるかどうかをチェックします。

判定のロジックは以下のとおりです。

  • フラグが 0 の場合:その数値は素数であるため、画面に出力します。
  • フラグが 1 の場合:その数値は素数ではないため、内側のループを抜けて次の数値へ進みます。

具体的には、ある数 i について、2 から i/2 までの整数で順番に割り切れるかどうかを確認します。1つでも割り切れる数が見つかれば素数ではないと判断できます。

プログラム:区間内の素数を表示する

以下は、2つの区間の間にある素数を表示するCプログラムです。

#include <stdio.h>
int main(){
    int number1,number2,i,j,flag;
    printf("enter the two intervals:");
    scanf("%d %d",&number1,&number2);
    printf("prime no's present in between %d and %d:",number1,number2);
    for(i=number1+1;i<number2;i++){// 2つの数値の間の区間
        flag=0;
        for(j=2;j<=i/2;++j){ // 素数かどうかを判定
            if(i%j==0){
                flag=1;
                break;
            }
        }
        if(flag==0)
            printf("%d\n",i);
    }
    return 0;
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

enter the two intervals:10 50
the number of prime numbers present in between 10 and 50:
11
13
17
19
23
29
31
37
41
43
47

この例では、10から50の間に存在する素数として、11、13、17、19、23、29、31、37、41、43、47 の11個が表示されています。

応用例:区間内の素数以外の数値を表示する

次に、逆の発想で、2つの数値の間から素数を除外した数値だけを表示するプログラムを紹介します。フラグ変数の初期値と判定条件を反転させるだけで実現できます。

プログラム

#include <stdio.h>
int main(){
    int number1,number2,i,j,flag;
    printf("enter the two intervals:");
    scanf("%d %d",&number1,&number2);
    printf("the numbers that are present after removing prime numbers in between %d and %d:\n",number1,number2);
    for(i=number1+1;i<number2;i++){// 2つの数値の間の区間
        flag=1;
        for(j=2;j<=i/2;++j){ // 素数かどうかを判定
            if(i%j==0){
                flag=0;
                break;
            }
        }
        if(flag==0)
            printf("%d\n",i);
    }
    return 0;
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

enter the two intervals:10 20
the numbers that are present after removing prime numbers in between 10 and 20:
12
14
15
16
18

このように、フラグ変数の扱いを少し変更するだけで、素数のみを抽出する処理と、素数を除外する処理の両方を同じアルゴリズムで実装できることがわかります。素数判定の基本構造を理解しておくと、さまざまな場面で応用できるでしょう。

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

    問題 実行時にユーザーが入力した値nに対して、1からnの間に存在するすべての素数を表示するC言語プログラムを作成しましょう。 解決策 ここでは、forループを使用して、実行時にユーザーから与えられた値nまでの範囲内にある素数をすべて検出・表示する方法を解説します。なお、素数とは、1とその数自身以外に約数を持たない、1より大きい自然数のことです。具体的には、2、3、5、7、11、13などが該当します。 アルゴリズム 以下は、実行時にユーザーが入力した値nまでの素数をすべて表示するためのアルゴリズムです。 ステップ1 − nの値を入力として読み込む ステップ2 − カウンタ変数countを0で初

  2. C++で3次元空間における2つの平面間の角度を計算する方法

    本記事では、3次元空間内にある2つの平面 P1 と P2 の間の角度を求める方法を解説します。平面の方程式と角度の公式平面 Pi の方程式は、一般に次の形式で表されます。a・x + b・y + c・z + d = 0ここで、係数 (a, b, c) は平面の法線ベクトルを表しています。2つの平面がなす角度を「A」とすると、それぞれの法線ベクトルのなす角として、次の式で求められます。cos A = (a₁a₂ + b₁b₂ + c₁c₂) / (√(a₁² + b₁² + c₁²) × √(a₂² + b₂² + c₂²))つまり、分子は2つの法線ベクトルの内積、分母はそれぞれの法線ベクトルの大