1、题目:将该整数每位的数平方后相加,得到一个新的数,如此循环下去,最后能得到1。
例如:
1
2
3
4
5
|
7^2=49
4^2+9^2=97
9^2+7^2=130
1^2+3^2+0^2=10
1^2+0^2=1
2、代码:
package pingfang; import java.util.ArrayList; /** * Created by Administrator on 2015/9/29 0029. */ public class Test { public static void main(String[] args) { String a="19"; chuli(a); } private static void chuli(String a) { int sum=0; String temp=a; ArrayList<String> list=new ArrayList<String>(); while(true){ sum=0; list.add(temp); for(int i=0;i<temp.length();i++) { sum += (int) Math.pow(temp.charAt(i) - '0', 2); } if (sum == 1) { System.out.print("ac"); break; } temp=Integer.toString(sum); for(String s:list) { if (s.equals(temp)) { System.out.print("error"); return; } } } } }3、主要注意的几点: (1)两个终止条件:循环多次后,最后结果为1;循环多次后,结果出现重复,那么在第一次出现重复时就终止
(2)当一个数据做了每一位平方和后得到sum,付给temp,重新判断是否出现过或者为1
(3)用list保存每一次操作后得到的结果
|