2 つの数の間の素数を C 言語で求める方法は?

素数を判定する関数を用意し、そのあとある2つの数の間にある整数全てをループして素数判定関数で素数かどうかを判定します。

ネイティブに日本語で言い換えると、次のようになります:

#include <stdio.h>

int isPrime(int num) {
    if (num <= 1) {
        return 0; // 小于等于1的数都不是素数
    }
    
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return 0; // 存在除了1和本身以外的因数,不是素数
        }
    }
    
    return 1; // 没有除了1和本身以外的因数,是素数
}

void findPrimes(int start, int end) {
    printf("素数:");
    for (int i = start; i <= end; i++) {
        if (isPrime(i)) {
            printf("%d ", i);
        }
    }
    printf("\n");
}

int main() {
    int start, end;
    printf("请输入两个整数:");
    scanf("%d %d", &start, &end);
    
    findPrimes(start, end);
    
    return 0;
}

このプログラムを実行すると、2つの整数をインプットし、その間の素数をアウトプットします。

注意:以上コードは単なる例のため、効率が悪い場合があります。より効率的な素数判定法が必要な場合は、エラトステネスのふるい法、オイラーのふるい法などのより複雑なアルゴリズムを使用してください。

bannerAds