问题描述:
如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数。显然,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);
}
}
方法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);
}
}