java - Java基础:欧拉项目问题
问题描述
斐波那契数列中的每个新项都是通过添加前两项来生成的。从 1 和 2 开始,前 10 个术语将是:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
求序列中所有不超过四百万的偶数项之和。
我的代码:
int x = 0;
int y = 1;
int z;
int sum = 0;
for(int i = 0; i <= 4000000; i++)
{
z = x + y;
x = y;
y = z;
if(y % 2 == 0)
{
sum = sum + y;
}
}
System.out.println(sum);
}
那输出1110529254
但是,正确的答案是4613732
。
帮助将不胜感激。
解决方案
您的代码进行了 400 万次迭代,但它不会检查序列中所有偶数项的总和是否不超过 400 万。
您可以在下面找到我的变体,即获取序列中不超过百万的所有偶值项的总和。
public class Example_1 {
public static void main(String args[]) {
int x = 0;
int y = 1;
int z;
int sum = 0;
while (true) {
z = x + y;
x = y;
y = z;
if(y % 2 == 0) {
sum = sum + y;
}
if (sum >= 4000000){
break;
}
}
System.out.println("Sum: " + sum);
}
}
我从这段代码中得到的答案4613732
正如我们所料。
推荐阅读
- c - 如何将变量放在 SDCC 中的特定内存位置
- group-by - 是否可以在 group_by() 之后执行多个汇总函数?
- javascript - 删除纯 JavaScript 中的嵌套类
- javascript - Reactjs 中的 JW 播放器集成
- arrays - 更新 android studio artic fix 2020.3.1 补丁 2 后 kotlin 属性出现问题
- python - 如何在 Python 中将空格添加到随机生成的列表中
- python - 如果 API 页面无效,如何关闭 websocket 连接
- azure - 在从自动打开的 chrome 浏览器启用 Azure VM 复制时,由于来自 AzureAD 的条件访问策略而遇到登录错误
- excel - 我似乎无法在 Excel 中使用宏打开 Outlook(无论是在 MacOS 还是 Windows 和 Outlook 版本上)
- python - 如何从 MMM-YYYY 转换为 YYYY-MM-DD,将 DD 设置为数据框中每月的最后一天?