5.26 3.4

一、问题

打印所有不超过 n(取 n<256)的其平方具有对称性质的数(也称回文数)。

二、分析

对于要判定的数 n,计算出其平方后(存于 a),按照“回文数”的定义要将最高位与最低位、次高位与次低位······进行比较,若彼此相等则为回文数。此算法需要知道平方数的位数,再一一将每一位分解、比较,此方法对于位数已知且位数不是太多的数来说比较适用。
此问题可借助数组来解决。将平方后的(a 的) 每一位进行分解,按从低位到高位的顺序依次暂存到数组中,再将数组中的元素按照下标从大到小的顺序重新将其组合成一个数k(如n=15,则a225且k-522),若a等于k则可判定a为回文数。

三、代码

#include<iostream>
using namespace std;
void main()
{
int m[16],n,i,t,count=0;
long unsigned a,k;
cout<<"No. number it's square(palindrome)"<<endl;
for(n=1;n<256;n++)
{
k=0;t=1;a=n*n;
for(i-0;a!=0;i++)
{
m[i]=a%10;
a/=10;
}
for(;i>0;i--)
{
k+=m[i-1]*t;
t*=10;
}
if(k==a)
cout<<++count<<" "<<n<<" "<<n*n<<endl;
}
}

 四、结果

 

posted @     阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示