在编程中计算质数有多种方法,以下是一些常见的方法:
1. 试除法
试除法是最基本的求质数方法,通过遍历从2到`num-1`的所有整数,检查`num`是否能被这些数整除。如果能被整除,则`num`不是质数;否则,`num`是质数。
```c
include include int isPrime(int num) { if (num <= 1) { return 0; } for (int i = 2; i * i <= num; i++) { if (num % i == 0) { return 0; } } return 1; } int main() { int start, end; printf("Enter the start and end numbers: "); scanf("%d %d", &start, &end); for (int i = start; i <= end; i++) { if (isPrime(i)) { printf("%d ", i); } } printf("\n"); return 0; } ``` 2. 排除偶数法 2的倍数(除了2本身)都不是质数,因此可以跳过所有偶数,只对奇数进行试除。 ```c include include int isPrime(int num) { if (num <= 1) { return 0; } if (num == 2) { return 1; } if (num % 2 == 0) { return 0; } for (int i = 3; i * i <= num; i += 2) { if (num % i == 0) { return 0; } } return 1; } int main() { int start, end; printf("Enter the start and end numbers: "); scanf("%d %d", &start, &end); for (int i = start; i <= end; i++) { if (isPrime(i)) { printf("%d ", i); } } printf("\n"); return 0; } ``` 3. 辗转相除法 辗转相除法(也称为欧几里得算法)是判断两个数是否互质的方法,也可以用来求一个数的质因数。 ```c include include int isPrime(int num) { if (num <= 1) { return 0; } for (int i = 2; i <= sqrt(num); i++) { if (num % i == 0) { return 0; } } return 1; } int main() { int start, end; printf("Enter the start and end numbers: "); scanf("%d %d", &start, &end); for (int i = start; i <= end; i++) { if (isPrime(i)) { printf("%d ", i); } } printf("\n"); return 0; } ``` 4. 埃拉托斯特尼筛法 埃拉托斯特尼筛法是一种高效的求质数方法,通过逐步剔除合数来找到所有质数。