任务是找到正整数n(取自代码新闻)的最近的平方数,nearest_sq(n)。我已经尝试了以下但只是得到一个无限循环。
while(Math.sqrt(n)%1!==0){
n-- || n++
}
return n;
有人可以通过此代码指出我的逻辑错误吗?
答案 0 :(得分:3)
这应该非常接近:
const nearest_sq = n => Math.pow(Math.round(Math.sqrt(n)), 2);
console.log(nearest_sq(117)); // 121
console.log(nearest_sq(900)); // 900
console.log(nearest_sq(15)); // 16
答案 1 :(得分:3)
Python程序,用于给定数字的最接近的平方数
from math import sqrt
def nearest_square(num):
num1 = round(sqrt(num))**2
return sqrt(num1)
print(nearest_square(48))
答案 2 :(得分:1)
也许它不是最短的方式,但至少我认为代码很容易理解
function nearst_sq(n) {
var nearstLow = nearst_low(n);
var nearstHigh = nearst_high(n);
return n-nearstLow < nearstHigh-n ? nearstLow : nearstHigh;
}
function nearst_high(n) {
if (Math.sqrt(n)%1 === 0) {
return n;
}
return nearst_high(++n);
}
function nearst_low(n) {
if (Math.sqrt(n)%1 === 0) {
return n;
}
return nearst_low(--n);
}
答案 3 :(得分:0)
function nearestSq(n){
let i,j;
for(i=j=n;Math.sqrt(i)%1!=0&&Math.sqrt(j)%1!=0;i++,j--);
return Math.sqrt(i)%1==0?i:j
}
console.log(nearestSq(21));
答案 4 :(得分:0)
一个简单的 Python3 实现
from math import sqrt
nearestSqr = lambda x: round(sqrt(x)) ** 2
print(nearestSqr(99))