C语言求给定区间内同构数

问题遇到的现象和发生背景

求同构数。

【问题描述】

设b是a的平方,若a与b的尾部相同,则称a是同构数。例如,25的平方是625,所以25是同构数。

编写程序满足如下要求:

输入两个整数m和n,找出m、n之间全部的同构数(包括m和n本身)。

【输入形式】

输入数据范围的下限m和上限n,要求m和n都为整数,m和n之间用一个空格分隔。

【输出形式】

按照由小到大的顺序输出所有同构数,每个整数占一行。若在该范围内没有同构数,则输出字符串No Answer。

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

循环计算每个数的平方数,判断数的长度,然后比较平方后的值的对应长度位数是否等于该数

#include <stdio.h>
int main()
{
    int m,n,i,t,k,count=0;
    scanf("%d%d",&m,&n);
    for(i=m;i<=n;i++)
    {
        k = i*i;
        t = i;
        while(t>0)
        {
            if(t%10 != k%10)
                break;
            t = t/10;
            k = k/10;
        }
        if(t==0)
        {
            printf("%d\n",i);
            count++;
        }
    }
    if(count==0)
        printf("No Answer");
    return 0;
}

//头文件
#include <stdio.h>
#include <stdlib.h>
//定义同构数判断函数
int tgs(int number)
{
//声明两个中间变量
int product, remainder;
//如果输入的值小于10则除10取余判断是否相等
if (number < 10)
{
product = number * number;
remainder = product % 10;
//如果是同构数返回1,否则返回0
if (number == remainder)
{
return 1;
}
else
{
return 0;
}
}
//如果输入的值小于100则除100取余判断是否相等
if (number < 100)
{
product = number * number;
remainder = product % 100;
//如果是同构数返回1,否则返回0
if (number == remainder)
{
return 1;
}
else
{
return 0;
}
}
}
//主函数
int main()
{
//声明接收用户输入的数据类型
int number;
printf("请输入需要判断的数:");
scanf("%d", &number);
//tgs(number)调用自定义函数
//打印判断返回值
printf("%d\n", tgs(number));
//程序暂停
system("pause");
//程序正常退出
return 0;
}

供参考:

#include <stdio.h>
int main()
{
    int i, a, b, k, t, s, flg;
    scanf("%d%d", &a, &b);
    for (i = a, flg = 0; i <= b; i++)
    {
        t = i; k = i * i; s = 1;
        while (t) { s *= 10; t /= 10; }
        if ((k % s) == i){ 
            printf("%d\n", i);
            flg = 1;
        }
    }
    if(!flg)
        printf("No Answer");
    return 0;
}