素数又称质数。 所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。
方法一:
#include <stdio.h>
int isPrime(int number) {
if (number <= 1) {
return 0;
}
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int number;
printf("请输入一个整数:");
scanf("%d", &number);
if (isPrime(number)) {
printf("%d是素数。\n", number);
} else {
printf("%d不是素数。\n", number);
}
return 0;
}
方法二:
#include <stdio.h>
int main() {
int number;
int isPrime = 1;
printf("请输入一个整数:");
scanf("%d", &number);
for (int i = 2; i < number; i++) {
if (number % i == 0) {
isPrime = 0;
break;
}
}
if (isPrime && number > 1) {
printf("%d是素数。\n", number);
} else {
printf("%d不是素数。\n", number);
}
return 0;
}
方法三:
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int number) {
if (number <= 1) {
return false;
}
if (number <= 3) {
return true;
}
if (number % 2 == 0 || number % 3 == 0) {
return false;
}
for (int i = 5; i * i <= number; i += 6) {
if (number % i == 0 || number % (i + 2) == 0) {
return false;
}
}
return true;
}
int main() {
int number;
printf("请输入一个整数:");
scanf("%d", &number);
if (isPrime(number)) {
printf("%d是素数。\n", number);
} else {
printf("%d不是素数。\n", number);
}
return 0;
}
详细注释版:
#include <stdio.h>
#include <stdbool.h>
// 判断一个数是否为素数的函数
bool isPrime(int number) {
if (number <= 1) {
return false;
}
if (number <= 3) {
return true;
}
// 判断是否可以被2或3整除
if (number % 2 == 0 || number % 3 == 0) {
return false;
}
// 使用较高效的算法判断是否为素数
for (int i = 5; i * i <= number; i += 6) {
// 判断是否可以被i或i + 2整除
if (number % i == 0 || number % (i + 2) == 0) {
return false;
}
}
return true;
}
int main() {
int number;
printf("请输入一个整数:");
scanf("%d", &number);
// 调用isPrime函数判断输入的数是否为素数
if (isPrime(number)) {
printf("%d是素数。\n", number);
} else {
printf("%d不是素数。\n", number);
}
return 0;
}