键盘接收两个正整数,输出它们之间的最大6个回文素数。要求每行输出两个数。如果不足6个,要报告实际个数
3条回答 默认 最新
- 小6的跟班 2023-01-07 11:15关注
#include<stdio.h> #include<math.h> int IsPrime(int n); int hws(int n); int main( ) { int n,i,j=0; int a,b,m[100]; scanf("%d %d",&a,&b); for(i=a;i<=b;i++) { if(hws(i)) { if(IsPrime(i)) { m[j]=i; j++; } } } if(j<6) { printf("回文素数个数为:%d\n",j); for(i=j-1;i>=0;i--) { printf("%d ",m[i]); if(i%2!=0 && j%2!=0) { printf("\n"); } } } else{ for(i=j-1;i>=j-6;i--) { printf("%d ",m[i]); if(i%2==0) { printf("\n"); } } } return 0; } //判断是否素数 int IsPrime(int n) { int flag=1; int i; if(n<2) { flag=0; } for(i=2;i<n;i++) { if(n%i==0) { flag=0; break; } } return flag; } //判断是否回文数 int hws(int n) { int x=n,y=0,b; while(x!=0) { b= x%10; y= y*10+b; x =x/10; } if(n==y) { return 1; } else { return 0; } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用