自守数
如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数。
显然,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(不是自守数)。
我不知道我还有哪种情况没有考虑到,求帮忙。
时间: 2024-10-10 17:17:22