风落平川 2023-01-07 01:06 采纳率: 96.8%
浏览 60
已结题

程序设计实验:键盘接收两个正整数,输出它们之间的最大6个回文素数。要求每行输出两个数。如果不足6个,要报告实际个数

键盘接收两个正整数,输出它们之间的最大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;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月7日