C趣味程序(二)(13)同构数
2.8同构数
如果正整数n是其平方数的尾,则称为同构数。比如6是它的平方数36的尾,76是它的平方数5776的尾,6和76都是同构数。
尝试寻找具有指定位数的同构数列。
1。算法分析:
对指定范围内的每个整数A,求其平方,判断A是否为其平方的尾部。通常有以下几种方法:
通过字符串子串比较找出同构数。
为了寻找更高位数的同构数,可以应用同构数的以下性质:一个M位同构数的尾m-1位也是同构数。原因很简单。A是一个M位,A的平方数末尾的m-1位只由A末尾的m-1位决定,与A的位无关,
很容易知道有三个同构数:1、5、6,所以两个同构数的个位数只能是1、5、6。
按照这个思路,我们可以用递归来寻找多位同构的数串。
2.求指定区间内的同构数
程序代码如下:
#include
#include
#include
char *right(char *ms,int len); /*截取一个字符串尾部长为len个字符的子串*/
void main()
{
long a;
int len;
char as[10];
char ms[20];
printf("求[1,10000]中的同构数:\n");
for(a=1;a
0条评论