李玉新


私信TA

用户名:liyuxin

访问量:7524

签 名:

等  级
排  名 5474
经  验 1536
参赛次数 1
文章发表 13
年  龄 0
在职情况 学生
学  校 河南农业大学
专  业

  自我简介:

解题思路:既是素数又要是回文,我就用了两个调用---素数和回文。这样,每循环一个数可用调用直接判断是否是素数,回文。当且仅当这个数既是回文又要是素数时,即可输出该数。否则执行下一个循环,判断下一个数是否为素数回文数。直到b结束。我不想用数组表示,所以回文数的判断可能会给你新思路。每判断一次左右对称的数是相等的话,将该数去头去尾,进行下一次判断。直到将该数的对称位数判断完。

注意事项:理清如何判断素数,如何判断回文数。注意数型,中间用了两次强制转换。也算是学到了点东西。其他没啥挺简单的。注:因为此题是数字可以不用数组判断回文数,若为字符串,则需用数组。

参考代码:

#include<stdio.h>
#include<math.h>
int sushu(int a)
{
 int i,t=1;
 for(i=2;i<=sqrt(a);i++)
 {
  if(a%i==0)
  {
  t=0;
  break;
  }
 }
 return t;//t==1时为素数;
}
int huiwen(int a)
{
 int j,k=1,n=0,x;
 x=a;
 while(x>0)
 {
  x=x/10;n++;
 }
  while(n>1)
  {
   
   if(a%10==a/(int)pow(10,n-1))
       {
       a=a%(int)pow(10,n-1);a=a/10;n=n-2;
       }
      if(a%10!=a/pow(10,n-1))  {
            k=0;break;
            }
  }
  

 return k;//k==1时为回文
}
int main()
{
 int a,b,i;
 scanf("%d%d",&a,&b);
 for(i=a;i<=b;i++)
 {
  if(sushu(i)==1&&huiwen(i)==1) printf("%d\n",i);
 }
 return 0;
}

 

0.0分

0 人评分

  评论区

  • «
  • »