链接:
自守数是指一个数的平方的尾数等于该数自身的自然数。例如: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;
- }
- }
- }
来源: http://www.bubuko.com/infodetail-1953394.html