在C语言中,判断一个数是否为素数可以通过以下几种方法实现:
方法一:基本循环判断
#include <stdio.h>
int main() {
int number, i;
printf("请输入一个数: ");
scanf("%d", &number);
for (i = 2; i <= number - 1; i++) {
if (number % i == 0) {
printf("%d不是素数\n", number);
return 0;
}
}
printf("%d是素数\n", number);
return 0;
}
方法二:优化循环判断,只遍历到平方根
#include <stdio.h>
#include <math.h>
int main() {
int number;
printf("请输入一个数: ");
scanf("%d", &number);
for (int i = 2; i <= sqrt(number); i++) {
if (number % i == 0) {
printf("%d不是素数\n", number);
return 0;
}
}
printf("%d是素数\n", number);
return 0;
}
方法三:封装函数
#include <stdio.h>
#include <math.h>
bool isPrime(int n) {
if (n <= 1) return false; // 1 和负数不是素数
if (n == 2) return true; // 2 是最小的素数
if (n % 2 == 0) return false; // 偶数(除了2)都不是素数
for (int i = 3; i <= sqrt(n); i += 2) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int num;
printf("请输入一个正整数: ");
scanf("%d", &num);
if (isPrime(num)) {
printf("%d 是素数\n", num);
} else {
printf("%d 不是素数\n", num);
}
return 0;
}
方法四:统计素数个数
#include <stdio.h>
int main() {
int i, m, n, count = 0;
int sum = 0;
scanf("%d %d", &m, &n);
if (m == 1) m = 2;
for (i = m; i <= n; i++) {
int isPrime = 1;
for (int k = 2; k < i; k++) {
if (i % k == 0) {
isPrime = 0;
break;
}
}
if (isPrime == 1) {
cnt++;
sum += i;
}
}
printf("%d %d\n", cnt, sum);
return 0;
}
方法五:输出100-200之间的素数
#include <stdio.h>
#include <math.h>
int main() {
int number, i;
for (number = 100; number < 201; number++) {
for (i = 2; i <= sqrt(number); i++) {
if (number % i == 0) {
break;
}
}
if (i < number) {
printf("%d\n", number);
}
}
return 0;
}
总结
以上方法都可以用来判断一个数是否为素数,但方法二和方法三通过只遍历到数的平方根来提高效率,方法四将判断素数的逻辑封装成函数,方法五则用于统计特定范围内的素数个数。根据实际需求选择合适的方法即可。