java - 创建一个包含前 x 个快乐数字的数组
问题描述
我想创建一个包含前 x 个快乐数字的数组。
一个快乐的数字可以定义为一个数字,当它被其数字的平方和重复替换时将产生 1。如果这个过程导致包含 4 的数字无限循环,则该数字称为不快乐数字。
我设法编写了两个函数:一个是对平方数字求和,另一个是检查一个数字是否满意:
public static int sumDigitSquare(int n) {
if(n < 10)
return (int) (Math.pow(n,2));
return (int) (Math.pow((n%10),2)) + sumDigitSquare(n/10);
}
public static boolean isHappy(int n) {
int res = sumDigitSquare(n);
while(res != 1 && res != 4) {
res = sumDigitSquare(res);
}
if(res == 1)
return true;
return false;
}
现在我想添加一个函数public static int[] happyArray(int x)
,它将前 x 个快乐数字作为数组返回,但我不知道如何实现这一点。
解决方案
这是一种方法。但是,它不会验证您的其他方法是否正确。
- 分配一个数组来存储它们
- 第一个数字 ,
n
设置为 1。 - 继续交互直到找到 x 个数字
- 为 while 循环的每次迭代递增
n
。 - 找到数字后返回数组
x
。
public static int[] getHappy(int x) {
int n = 1;
int[] happyNumbers = new int[x];
int i = 0;
while (i < x) {
if (isHappy(n)) {
happyNumbers[i++] = n;
}
n++;
}
return happyNumbers;
}
推荐阅读
- python - Python plot 仅使用 x 的每个第 n 个元素来标记 x 轴
- javascript - 如果选中另一个具有相同 ID 的复选框,如何禁用复选框
- windows - 如果服务未运行,批处理文件以启动多服务
- android - 如何获取允许在 Android 中安装其他应用程序的应用程序列表(从我的应用程序)?
- angular - 尝试将 zip 文件下载到从 Express 中的服务器流式传输的客户端浏览器
- calculator - 用于制作简单计算器的 Visual Basic 帮助
- angular - 用于检查 Angular 6 的组件加载时间的 Chrome 扩展程序
- node.js - 为什么 bin\www 不是 js 文件?
- c++ - 在结构列表向量中打印结构成员
- azure - 如何通过 azure 模板将其他磁盘添加到 AKS 节点?