趣味整数-自守数-java

时间:2022-07-27 11:10:52

问题描述:

如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数。显然,5和6是自守数 

5*5=25  6*6=36   25*25=125

求10000以内的自守数

方法1:

public class Main {
public static void getZsNum(int maxNum){
for(int i=5 ; i<=maxNum ; i++){
int n = (i+"").length();
int a = i*i; //计算i的平方
int b = a-i;//计算i的平方减i
int c = (int)Math.pow(10, n); //计算10的i的位数次方
if(b%c==0){ //如果i的平方减i 整除10的i的位数次方,那么i就是自守数
System.out.println(i);
}
}
}
public static void main(String[]Args){
getZsNum(10000);


}
}

趣味整数-自守数-java


方法2:

public class Main {
public static void getZsNum(int maxNum){
for(int i=5 ; i<=maxNum ; i++){
String s1 = String.valueOf(i);//将i转换为字符串
String s2 = String.valueOf(i*i);//将i的平方转换成字符串
String s3 = s2.substring(s2.length()-s1.length());//s3定义为字符串s2最后的长度为s1字符串的字符串
if(s3.equals(s1)){//比较i1字符串和i3字符串是否相同
System.out.println(i);
}
}
}
public static void main(String[]Args){
getZsNum(10000);


}
}

趣味整数-自守数-java