gpt4 book ai didi

java - 确定方法是一个人的年龄==当前年份的平方

转载 作者:行者123 更新时间:2023-11-30 05:04:02 25 4
gpt4 key购买 nike

我正在尝试编写一种方法来确定一个人的年龄的平方是否等于当前年份。例如,一名男子在 1849 年 43 岁,43 的平方就是 1849 年。下面是我的代码,但我不知道为什么我的异常(exception)不起作用,因为假设没有人可以活过 123 岁

 public Boolean isAlive(int y){
assert( y>=1888 && y<=2134);
int age=0;
while(age<=123){
y=y+1;
age=age+1;
if(age*age==y){
int c=age;
return true;
}
}
return false;
}

最佳答案

您试图解决的问题似乎是

y + n = n^2

其中 y 是起始年份,n 是年龄,两者都必须是正整数。

重新排列后是

n = (sqrt(1 + 4 * y) + 1)/2;

例如

当 y = 1806,n = 43,n + y = n * n = 1849 时。

当 y = 1980、n = 45、n + y = 2025、n * n = 2025 时。

所以你可以写

public boolean squareAgeIfBorn(int year) {
double n = (Math.sqrt(1 + 4 * year) + 1) / 2;
return Math.abs(n - (long) n) < 1e-9; // i.e. if n is a whole number.
}

关于java - 确定方法是一个人的年龄==当前年份的平方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5716047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com