判断自守数
输入任意一个数,判断它是否为自守数。如果一个自然数的平方数的尾部任然为该自然数本身,则称其为自守数。例如:
5 * 5 = 25
76 * 76 = 5776
625 * 625 = 390625 把整个程序的数值定义成字符型,输入一个数后获取长度,计算平方,用分片判断尾部是否是该数 def test(n):
result = n * n
n, result = str(n), str(result)
if result == str(n):
return True
return False
print(test(5)) 自己写的代码,还是不够精炼,当然,你也得考虑到int的取值范围,超范围可能就不对了
#include "stdafx.h"
#include <string.h>
#include "math.h"
#include<iostream>
using namespace std;
int isnum(int num){
int j,i,len1,len2,ret;
j=num*num;
char *str1,*str2;
i=ret=0;
str1=(char*)malloc(256*sizeof(char));
str2=(char*)malloc(256*sizeof(char));
itoa(num, str1, 10);
itoa(j, str2, 10);
len1=strlen(str1);
len2=strlen(str2);
printf("%2d %2d %2d %2s %2s\n",j,len1,len2,str1,str2);
while((str1+len1-i) !=str1)
{
i++;
printf("%c %c\n",*(str1+len1-i),*(str2+len2-i));
if(*(str1+len1-i)!=*(str2+len2-i))
{
ret=0;
break;
}
ret=1;
}
return ret;
}
void test(){
int a;
a=isnum(13);
printf("%d",a);//1是 0不是
}
int main()
{
test();
system("pause");
//getchar();
return 0;
} 对任意一个整数进行求余,只要余数是1,5,6,那么就是自守数 任意一个数n
n%10即可 emm,0也算
页:
[1]