解题思路:既是素数又要是回文,我就用了两个调用---素数和回文。这样,每循环一个数可用调用直接判断是否是素数,回文。当且仅当这个数既是回文又要是素数时,即可输出该数。否则执行下一个循环,判断下一个数是否为素数回文数。直到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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复