首页 > 代码库 > 判断一个int型数字是否是自守数

判断一个int型数字是否是自守数

自守数
如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数。
显然,5和6是一位自守数(5x5=25 6x6=36),25x25=625 76x76=5776,所以25和76是两位自守数。
详细描述:
接口说明
原型:
Public static boolean isAutoMorphicNum( int num)

输入参数:
num 需要判断的数
输出参数(指针指向的内存区域保证有效):

返回值:
true 是自守数
false 不是自守数
涉及知识点:
JAVA语言基础:数字处理

我写的程序:

public static boolean isAutoMorphicNum(int num)
	{
		/*在这里实现功能*/
		String input = num + "";
		String power = num * num + "";
		System.out.println(num * num);
		if (input.equals(power.substring(power.length() - input.length()))) {
			return true;
		}
		return false;
	}

我自己的测试用例:

public void testCase01() 
	{
		assertEquals(Demo.isAutoMorphicNum(0),true);
		assertEquals(Demo.isAutoMorphicNum(1),true);
		assertEquals(Demo.isAutoMorphicNum(5),true);
		assertEquals(Demo.isAutoMorphicNum(6),true);
		assertEquals(Demo.isAutoMorphicNum(25) ,true);
		assertEquals(Demo.isAutoMorphicNum(76) ,true);
		assertEquals(Demo.isAutoMorphicNum(376) ,true);
		assertEquals(Demo.isAutoMorphicNum(625) ,true);
		assertEquals(Demo.isAutoMorphicNum(9376) ,true);
		assertEquals(Demo.isAutoMorphicNum(10), false);
		assertEquals(Demo.isAutoMorphicNum(100) ,false);
		assertEquals(Demo.isAutoMorphicNum(999999999) ,false);
	}	
我自己的测试用例都是能通过的,但是提交至答题系统后,系统测试说有一个测试用例不通过:

技术分享


关于负数和最大的int的数我已经测试过了,输入的数是否是负数对系统的判别结果不影响,即貌似负数不可能是自守数,当输入为最大int值:999999999时,我的程序也能判断出结果,即为false(不是自守数)。

我不知道我还有哪种情况没有考虑到,求帮忙。

判断一个int型数字是否是自守数