编写函数isprime(int a),用来判断自变量a是否为素数,若是素数,函数返回整数1,否则返回0
判断一个数是否为素数是一个基本的数学问题,编写一个函数 isprime来实现这个功能。下面提供一个专业的、优化的C语言代码示例,该函数接收一个整数参数 a,如果 a是素数则返回1,否则返回0。
函数实现
#include <stdio.h>
#include <math.h>
// 函数声明
int isprime(int a);
// 主函数用于测试
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
if (isprime(num)) {
printf("%d 是素数\n", num);
} else {
printf("%d 不是素数\n", num);
}
return 0;
}
// 判断素数的函数实现
int isprime(int a) {
if (a <= 1) {
return 0;
}
if (a == 2 || a == 3) {
return 1;
}
if (a % 2 == 0 || a % 3 == 0) {
return 0;
}
for (int i = 5; i <= sqrt(a); i += 6) {
if (a % i == 0 || a % (i + 2) == 0) {
return 0;
}
}
return 1;
}
代码详解
-
函数声明
int isprime(int a); 声明
isprime函数,该函数接收一个整数参数并返回一个整数(1表示素数,0表示非素数)。 -
主函数
int main() { int num; printf("请输入一个整数: "); scanf("%d", &num); if (isprime(num)) { printf("%d 是素数\n", num); } else { printf("%d 不是素数\n", num); } return 0; } 在主函数中,首先从用户处读取一个整数,然后调用
isprime函数进行判断,并根据返回值输出相应的结果。 -
判断素数的函数实现
int isprime(int a) { if (a <= 1) { return 0; } if (a == 2 || a == 3) { return 1; } if (a % 2 == 0 || a % 3 == 0) { return 0; } for (int i = 5; i <= sqrt(a); i += 6) { if (a % i == 0 || a % (i + 2) == 0) { return 0; } } return 1; } -
初步判断:
if (a <= 1): 1及以下的数都不是素数。if (a == 2 || a == 3): 2和3是最小的两个素数。if (a % 2 == 0 || a % 3 == 0): 排除所有能被2或3整除的数。
-
优化的判断循环:
- 从5开始,每次循环增加6,并检查
a是否能被i或i+2整除。这是因为所有素数可以表示为6k±1(其中k是整数)。 - 只需要检查到
sqrt(a),因为一个大于sqrt(a)的数的因子必须小于sqrt(a)。
- 从5开始,每次循环增加6,并检查
-
浙公网安备 33010602011771号