c语言求100000以内回文质数,[蓝桥杯][历届试题]回文数字 (C++描述,超级好理解的代码,要耐心看完,套路问题,初学者都会,最简方法)...

解题思路:一共运行了9*10*10*2次,就是把n拆成回文串的形式,而不是在10000和100000之间一个一个的找满足条件的回文串,这里运用到的就是循环嵌套

注意事项:在for循环中定义需要的参数最终可以释放掉,注意这里的格式输出问题,要理解回文串的真正含义,必须是要从小到大输出参考代码:

#include 

using namespace std;

void zhuanhua(int n,int m)//拆成m位数   输出的数为abcba形式    或者abccba的形式

{

for(int a=1;a<=9;a++)//最高位不能为0

{

for(int b=0;b<=9;b++)

{

for(int c=0,sum;c<=9;c++)

{

if((2*a+2*b+c)==n&&m==5)//输出5位的回文串

{sum=a*10000+b*1000+c*100+b*10+a;

cout<

if((2*a+2*b+2*c)==n&&m==6)//输出6位的回文串

{sum=a*100000+b*10000+c*1000+c*100+b*10+a;

cout<

}

}

}

}

int main(int argc, char *argv[])

{

int n;

cin>>n;

if(n/5<=9)//若5位全大于9,即n>45时,只能输出六位数的回文数,n<=45可以拆成5位和6位的

{zhuanhua(n,5);} //进行转化运算,转成5位的

zhuanhua(n,6);//进行转化运算,转成6位的

if(n<2||n>54)//此时5位和6位的都无法组成时

cout<

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值