题目:
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的那个数字。
请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
分析:
首先建一个max专门用来不断储存比较大的那个数字,
我们循环100次。循环100次肯定就够用了,因为大概最多十几次也就到1了,我们对这个数不断拿个位,每拿一个个位平方做累加给sum并除以10,直到这个数不大于0位置,给max,然后把新得到的数字不断再进行上面紫色粗体部分进行循环,直到循环100次,打印max即可
步骤:
![](https://img-blog.csdnimg.cn/img_convert/db4a088e209c607873dd9673576fa1b9.png)
package 历届刷题前7214;
import java.util.Scanner;
public class 平方怪圈 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sum=0;
int max=0;
for (long i = 0; i < 100; i++) {
while (n>0) {
sum+=Math.pow((n%10), 2);
n=n/10;
}
if (sum>max) {
max=sum;
}
n=sum;
sum=0;
}
System.out.println(max);
}
}