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

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


#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. 判断回文数。 https://so.csdn.net/so/search?spm=1005.2025.3001.4498&q=%E5%88%A4%E6%96%AD%E5%9B%9E%E6%96%87%E6%95%B0&t=blog&u=
  2. 判断是否是素数。 https://so.csdn.net/so/search?q=%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%AA%E6%95%B0%E6%98%AF%E5%90%A6%E4%B8%BA%E7%B4%A0%E6%95%B0&t=blog&u=&urw=

供参考:

#include <stdio.h>
int hw(int s)   //判断回文
{
    int a = 0,b = s;
    while (b)
    {
        a = a * 10 + b % 10;
        b /= 10;
    }
    return a == s;
}
int su(int s)  //判断素数
{
    if (s < 4)       return s > 1;
    if (!(s & 1))    return 0;
    for(int i = 3; i * i <= s ;i++)
        if(s % i==0) return 0;
    return 1;
}
int main()
{
    int m,n,t,i;
    scanf("%d%d",&m,&n);
    if (m > n) t=m,m=n,n=t;
    for(i = n, t = 0;i >= m && t < 6; i--){ //输出m n之间的最大6个回文素数
        if(su(i) && hw(i)){
            t++;
            printf(t%2==0 ? "%d\n" : "%d ",i);
        }
    }
    if (t < 6) printf(t%2==0?"%d":"\n%d",t); //如果不足6个,要报告实际个数
    return 0;
}