C語言找最大質數

在C語言中,你可以使用一個簡單的迴圈來找到一個範圍內的最大質數。以下是一個示例程式,它會詢問用戶想要查找哪個範圍內的最大質數,然後列印出結果:

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

int isPrime(int n) {
    if (n <= 1) return 0; // 1 is not considered a prime number
    if (n <= 3) return 1; // 2 and 3 are the only prime numbers less than 4
    if (n % 2 == 0 || n % 3 == 0) return 0; // If n is even or divisible by 3, it's not prime

    int sqrtN = (int)sqrt(n);
    for (int i = 5; i <= sqrtN; i += 6) {
        if (n % i == 0 && n % (i + 2) == 0) return 0; // If n is divisible by either i or i+2, it's not prime
    }

    return 1; // n is prime
}

int main() {
    printf("請輸入你要查找的最大質數範圍(例如: 100): ");
    int maxRange;
    scanf("%d", &maxRange);

    int maxPrime = 0;
    for (int i = 2; i <= maxRange; i++) {
        if (isPrime(i)) {
            if (i > maxPrime) maxPrime = i;
        }
    }

    printf("在%d以內的最大質數是: %d\n", maxRange, maxPrime);
    return 0;
}

這個程式使用了isPrime函數來檢查一個數是否為質數。這個函數首先檢查數字是否為1(因為1不是質數),然後檢查是否為2或3的倍數,最後檢查是否為任何其他小於等於sqrt(n)的質數的倍數。

main函數中,程式會詢問用戶想要查找哪個範圍內的最大質數,然後使用一個迴圈來檢查從2到這個範圍內的所有數字是否為質數。如果發現一個比目前記錄的最大的質數更大的質數,程式就會更新這個記錄。最後,程式列印出在給定範圍內的最大質數。