输入一个数,输出离它最近的素数.如果该数本身是素数,则输出其本身; 若有两个距离相等,则输出小于它的那个素数。c语言
时间: 2024-05-10 09:15:45 浏览: 4
下面是一个实现离输入数最近的素数的 C 语言程序:
```c
#include <stdio.h>
// 判断是否为素数
int is_prime(int n) {
if (n < 2) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n;
printf("请输入一个正整数:\n");
scanf("%d", &n);
if (is_prime(n)) { // 如果该数本身是素数,则输出其本身
printf("%d\n", n);
return 0;
}
int smaller_prime = n - 1;
int larger_prime = n + 1;
while (!is_prime(smaller_prime) && !is_prime(larger_prime)) { // 在 n 左右寻找素数
smaller_prime--;
larger_prime++;
}
if (is_prime(smaller_prime)) { // 输出距离 n 最近的素数
printf("%d\n", smaller_prime);
} else {
printf("%d\n", larger_prime);
}
return 0;
}
```
程序运行时,会提示用户输入一个正整数,然后判断该数是否为素数。如果是素数,则直接输出该数;如果不是素数,则在该数的左右两侧寻找最近的素数,然后输出。如果有两个距离相等的素数,则输出小于该数的那个素数。