求1~9999之间的全部同构数

JavaScript011

求1~9999之间的全部同构数,第1张

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

char *right(char *ms,int len)/*截取一个字符串尾部长为len个字符的子串*/

void main()

{

long a

int len

char as[10]

char ms[20]

printf("求[1,9999]中的同构数:\n")

for(a=1a<10000a++)

{

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=0i<(signed)strlen(ms)ms++)

for(j=0j<lenj++,ms--)

return ms

}

#include<stdio.h>

int fun(int num)

{    

    if (num <= 0)

        return 0

    

    int i = num, square = num*num, res = 1

        

    while (i) //计算num的位数

    {

        res *= 10

        i = i/10

    }

        

    if (square%res == num)

        return 1

    return 0

}

int main()

{

    int i

    for(i = 1 i <= 100 i++)

    {

        if (fun(i))

        {

            printf("%d %d\n", i, i*i)

        }

    }

    return 0

}

代码编译通过,输出结果为:

1 1

5 25

6 36

25 625

76 5776

望采纳,谢谢~