Sca*_*ola 9 javascript numbers perfect-square
我创建了一个函数,用于测试给定参数是否为方数.
在这里阅读方形数字:https://en.wikipedia.org/?title = Square_number
如果数字是平方数,则返回true,否则返回false.负数也会返回错误.
例子:
isSquare(-12) // => false
isSquare( 5) // => false
isSquare( 9) // => true
isSquare(25) // => true
isSquare(27) // => false
Run Code Online (Sandbox Code Playgroud)
现在,我正在使用这种方法:http://jsfiddle.net/marcusdei/ujtc82dq/5/
但是,是否有更短的更简洁的方式来完成工作?
Tus*_*har 30
试试这个:
var isSquare = function (n) {
return n > 0 && Math.sqrt(n) % 1 === 0;
};
Run Code Online (Sandbox Code Playgroud)
sqrt是完整的数字即integer小智 6
我肯定会去:
var isSquare = function (n) {
return Math.sqrt(n) % 1 === 0;
};
Run Code Online (Sandbox Code Playgroud)
PS:0对于那些想知道的人来说是一个平方数
小智 5
//1st
var isPerfectSquare = function(num) {
return Math.sqrt(num) % 1 === 0;
}
//2nd: loop through all the number from 1 to num
var isPerfectSquare = function(num) {
for(let i=1; i <= num ; i++){
let d = i * i;
if(d === num){
return true
}
}
}
// Optimize solution: Binary Search
var isPerfectSquare = function(num) {
if(num ==1)return true
let left = 2;
let right = Math.floor(num/2);
while(left <= right){
let middle = Math.floor((left + right)/2)
let sqr = middle * middle;
if(sqr == num){
return true
}else{
if(sqr > num){
right = middle -1
}else{
left = middle + 1
}
}
}
return false
};Run Code Online (Sandbox Code Playgroud)