第一种方法:用到3次for循环,不建议使用这种方法,浏览器执行会有一定的延迟
<script>
or (a = 1; a <= 1000; a++) {
for (b = 1; b <= 1000; b++) {
for (c = 1; c <= 1000; c++) {
if (Math.pow(a, 2) + Math.pow(b, 2) + Math.pow(c, 2) == 1000) {
console.log(a, b, c);
}
}
}
}
</script>
对a,b,c进行嵌套循环,然后使用判断语句输出结果
Math.pow(a, 2)这个的意思就是a*a(a的2次方)
查看控制台结果:
第二种方法,只需要用到2次for循环,这种方法推荐,我们平时在写类似的算法时尽量用
2次以下的循环,可以减小浏览器的执行时间!!!
<script>
for (var a = 1; a <= 1000; a++) {
for (var b = 1; b <= 1000; b++) {
var c = parseInt(Math.sqrt(1000 - Math.pow(a, 2) - Math.pow(b, 2)))
if (Math.pow(a, 2) + Math.pow(b, 2) + Math.pow(c, 2) == 1000 & c != 0) {
console.log("输出的a, b, c分别是", a, b, c);
}
}
}
</script>
我们查看控制台的结果,可以得到相同的结果:
这两种方法的区别是什么呢?
我们使用第一种方法循环的次数是:1000*1000*1000=1000000000(10亿)
我们使用第二种方法循环的次数是:1000*1000=1000000(100万)
两种方法的循环次数相差了100倍,浏览器执行的时间相差也很大,我们选择下面可以在更短的时间下得到我们想要的结果!!!