把一个数的平方计算出来,再变成字符串比较字符串的末几位如果一样就说明是同构数。这个方法更直观。
#include
#include
#include
char *right(char *ms,int len); /*截取一个字符串尾部长为len个字符的子串*/
void main()
{
long a;
int len;
char as[10];
char ms[20];
printf("求[1,1000]中的同构数:\n");
for(a=1;a<=1000;a++)
{
ultoa(a,as,10); /*数a转换为字符串,存入as*/
len=strlen(as);
ultoa(a*a,ms,10);
if(strcmp(as,right(ms,len))==0) /*比较字符串as与ms长为len的子串是否相等*/
printf("%s 其平方为 %s\n",as,ms); /*相等就是同构数,输出结果*/
}
}
char *right(char *ms,int len) /*截取字符串尾部长为len子串的函数*/
{
int i,j;
for(i=0;i<(signed)strlen(ms);ms++);
for(j=0;j
}
#include
void main()
{
int n;
int m;
for(n=1;n<1000;n++)
{
m=n*n;
if(m/10<10 && m%10==n)
cout<
cout<
{
if(m%100==n||m%1000==n)
cout<
if(m/1000>=10&&m/1000<100&&m%1000==n)
cout<
cout<
}