C言語で指定した範囲内に存在する素数の数を判定するにはどうすればよいですか?

区間内における素数の数を判断するには、以下のような方法があります。

  1. 素数判定をする関数を書く。素数は1と自分自身でしか割り切れない数なので、2から順にその数から平方根までの数で割り切れかどうかを調べればよい。
#include <math.h>

int isPrime(int num) {
    if (num <= 1) {
        return 0;
    }
    
    int limit = sqrt(num);
    for (int i = 2; i <= limit; i++) {
        if (num % i == 0) {
            return 0;
        }
    }
    
    return 1;
}
  1. メイン関数で、ユーザーから区間の上限、下限の入力を取得する。
#include <stdio.h>

int main() {
    int lower, upper;
    printf("请输入区间上下界:");
    scanf("%d %d", &lower, &upper);
  1. ループを使って範囲内の全ての数に対して素数判定関数を呼び出す。素数であればカウンタに1を加算する。
    int count = 0;
    for (int i = lower; i <= upper; i++) {
        if (isPrime(i)) {
            count++;
        }
    }
  1. 素数の個数を出力する。
    printf("区间内素数的个数为:%d\n", count);
    
    return 0;
}

以下のコード全体:

#include <stdio.h>
#include <math.h>

int isPrime(int num) {
    if (num <= 1) {
        return 0;
    }
    
    int limit = sqrt(num);
    for (int i = 2; i <= limit; i++) {
        if (num % i == 0) {
            return 0;
        }
    }
    
    return 1;
}

int main() {
    int lower, upper;
    printf("请输入区间上下界:");
    scanf("%d %d", &lower, &upper);
    
    int count = 0;
    for (int i = lower; i <= upper; i++) {
        if (isPrime(i)) {
            count++;
        }
    }
    
    printf("区间内素数的个数为:%d\n", count);
    
    return 0;
}

このプログラムを実行すると、ユーザは区間の上下限を入力することができ、プログラムはその区間内の素数の個数を返します。

bannerAds