若 n 有因子,必有一因子 ≤ √n。只需試除 2 到 √n。
#include <stdio.h>
#include <math.h>
int is_prime(int n) {
if (n <= 1) return 0;
if (n <= 3) return 1; // 2,3 是素數
if (n % 2 == 0) return 0; // 排除偶數
int limit = (int)sqrt(n);
for (int i = 3; i <= limit; i += 2) // 只試奇數
if (n % i == 0) return 0;
return 1;
}
int main(void) {
int n;
printf("請輸入大於 1 的整數: ");
scanf("%d", &n);
printf("%d %s素數\n", n, is_prime(n) ? "是" : "不是");
return 0;
}
| 輸入 | 結果 | 說明 |
|---|---|---|
| 2 | 素數 | 最小素數 |
| 17 | 素數 | |
| 100 | 非素數 | 2×50 |
| 9973 | 素數 | 四位數最大素數 |
| 1 | 非素數 | 定義排除 |