判断一个数是否为对称且不大于五位数的素数。要求判断对称和判断素数各写一个函数。 输入格式: 测试数据有多组,处理到文件尾。每组测试输入一个正整数n(0 < n < 2 32 )。 输出格式: 对于每组测试,若n是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独占一行。注意:引号不必输出。c语言
时间: 2024-03-18 19:39:19 浏览: 120
以下是对称数判断函数的代码,使用了字符串的方法:
```c
int isSymmetric(int n){
char s[10];
sprintf(s, "%d", n); // 将整数转化为字符串
int len = strlen(s);
for(int i = 0; i < len / 2; i++){ // 判断是否对称
if(s[i] != s[len - i - 1]){
return 0;
}
}
return 1;
}
```
以下是素数判断函数的代码,使用了简单的试除法:
```c
int isPrime(int n){
if(n <= 1){ // 小于等于1的数不是素数
return 0;
}
for(int i = 2; i * i <= n; i++){
if(n % i == 0){ // 有因子,不是素数
return 0;
}
}
return 1;
}
```
最后,我们将两个函数结合起来,完成主函数的编写:
```c
#include <stdio.h>
#include <string.h>
int isSymmetric(int n){
char s[10];
sprintf(s, "%d", n); // 将整数转化为字符串
int len = strlen(s);
for(int i = 0; i < len / 2; i++){ // 判断是否对称
if(s[i] != s[len - i - 1]){
return 0;
}
}
return 1;
}
int isPrime(int n){
if(n <= 1){ // 小于等于1的数不是素数
return 0;
}
for(int i = 2; i * i <= n; i++){
if(n % i == 0){ // 有因子,不是素数
return 0;
}
}
return 1;
}
int main(){
int n;
while(scanf("%d", &n) != EOF){
if(isSymmetric(n) && isPrime(n)){ // 判断是否为对称素数
printf("Yes\n");
} else{
printf("No\n");
}
}
return 0;
}
```
阅读全文