public class Text1144 { public static void main(String[] args) { /* *自守数是指一个数的平方的尾数等于该数自身的自然数。 *例如: *25^2=625 *76^2=5776 *9376^2=87909376 *请求出200000以内的自守数? */ // 记录该数平方的尾数 int b ; // 把i的平方转成String的变量 String a ; // 遍历寻找自守数(要定义成长整型,否则当数值大的时候会报数字符串下标越界) for (int i = 0;i <= 200000;i++){ // 如果i != 0;输出0 if (i != 0){ // 把i的平方转成String型(因为String.valueOf()转的是整型,但是参数是这个整型数的平方,此时超过了整型数范围,赋值给字符串值会为0,所以前面值定义为long) a = String.valueOf(i*i); // 截取a尾数并转成整型 b = Integer.valueOf(a.substring(a.length()-weiShu(i))); // 如果i的平方的尾数等于i;就输出i if (b == i){ System.out.println(i); } // 如果i = 0;输出0 }else System.out.println(0); } } // 计算i的位数 public static int weiShu(long num){ int count = 0; while (num >= 1){ num /= 10; count++; } return count; } }
时间: 2024-02-10 11:21:47 浏览: 136
java中public class与class区别
5星 · 资源好评率100%
这段代码是一个完整的 Java 程序,实现了求解 200000 以内的自守数。代码主要实现过程如下:
1. 定义变量 b 和字符串 a,用于记录平方尾数和平方字符串。
2. 使用 for 循环遍历 0 到 200000 之间的所有数字,存储在变量 i 中。
3. 判断当前数字是否为0,如果不为0则继续执行,否则直接输出0。
4. 将当前数字 i 的平方计算出来,并将其转换成字符串类型,存储在变量 a 中。
5. 通过 weiShu(long num) 方法获取当前数字 i 的位数,然后截取字符串 a 的尾数,并将其转换成整型,存储在变量 b 中。
6. 判断当前数字 i 是否等于变量 b 的值,如果相等则输出当前数字 i。
7. 在代码中还定义了一个 weiShu(long num) 方法,用于计算一个数字的位数。
需要注意的是,当计算一个数字的平方值的时候,为了避免数据类型溢出,需要使用长整型来存储中间结果。此外,在计算平方尾数的时候,也需要注意字符串下标越界的问题。
阅读全文