自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n以内的自守数的个数
接口说明
/*
功能: 求出n以内的自守数的个数
输入参数:
int n
返回值:
n以内自守数的数量。
*/
public static int CalcAutomorphicNumbers( int n)
{
/*在这里实现功能*/
return 0;
}
package test; import java.util.Scanner; //自守数
/*
功能: 求出n以内的自守数的个数 输入参数:
int n
返回值:
n以内自守数的数量。
*/
public class exam15 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
System.out.println(CalcAutomorphicNumbers(n)); }
scanner.close();
} public static int CalcAutomorphicNumbers(int n) {
if (n == 0 || n == 1) {
return n + 1;
} else {
int count = 2;
for (int i = 2; i <= n; i++) {
// if (isNum(i)) {
// count++;
// // System.out.println(i);
// }
if (isNum2(i)) {
count++;
System.out.println(i);
}
}
return count;
}
} // 方法1:if判断是否位数匹配
public static boolean isNum(int i) {
int s = i * i;
// 除到0就可以了
while (i != 0) {
int tmp1 = i % 10;
i /= 10;
int tmp2 = s % 10;
s /= 10;
if (tmp1 != tmp2) {
return false;
}
}
return true;
} // 方法2:调用endsWith()方法直接判断
public static boolean isNum2(int i) {
int s = i * i;
if (String.valueOf(s).endsWith(String.valueOf(i))) {
return true;
} else {
return false;
}
} }