1):一个整数称为是:【幸运数】,如果这个整数的各位数字的平方和为1或者反复计算各位数字的平方和为1 例如 19 是个幸运数
coding:java程序实现
import org.junit.Test; import java.util.ArrayList; import java.util.List; public class XingYunShu { List<Integer> list = new ArrayList<>(); @Test public void demo() { long startTime = System.currentTimeMillis(); // 100 以内的幸运数 for (int i = 0; i < 100; i++) { boolean flag = isLuckyNumber(i); System.out.println("是否为幸运数:{" + i + "}=" + flag); } long endTime = System.currentTimeMillis(); System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); } // 判断是否为幸运数 public boolean isLuckyNumber(Integer num) { List<Integer> integerList = splitNum(num); Integer count = 0; for (Integer l : integerList) { count += l * l; } if (count == 1) { return true; } if (list.contains(count)) { return false; } list.add(count); return isLuckyNumber(count); } // 把一个整数拆分为单个数值 public List<Integer> splitNum(Integer num) { List<Integer> list = new ArrayList<Integer>(); int length = (num + "").length(); for (int i = length - 1; i >= 0; i--) { list.add(num % 10); num /= 10; } return list; } }
将一个整数方式拆分的方式还有很多种,比如 number.toCharArray(); 这里避免了类型之间的转换。
有人会问道 类型之间的转换很消耗资源吗?
java设计模式 的核心就是多态,各种流行的框架都有大量类型转换的操作。
再烂的编程语言也不在乎这点资源,更何况java和c#。
稍微复杂点的算法,几层循环一嵌套就顶你这来回转换几万次,计算机没那么水,怎么说也是高科技是不。