1、有一个卡车司机肇事后想逃跑,但是被三个人看见其车牌号码,但是没有看全。一号说:车牌的前两位是一样的,二号说:车牌的后两位是一 样的,但是与前两位不一样,三号说:车牌是一个数字的平方,请计算车辆号牌是多少。(车辆号牌是4位数)
刚开始我的思路是这样的:
1: <script> 2: //1、设置一个x 代表前两位 3: let x; 4: //2、设置一个y 代表后两位 5: let y; 6: //3、第三个数是一个自然数的平方 自然数为num(1-10000) 7: let num; 8: for (let x = 0; x < 10; x++) { 9: for (let y = 0; y < 10; y++) { 10: if (x == y) { 11: continue; 12: } 13: for (let num = 0; num < 100; num++) { 14: let s = x * 1000 + x * 100 + y * 10 + y; 15: if (num * num == s) { 16: console.log(s); 17: } 18: } 19: } 20: } 21: </script>
经过优化后,变成了如下这样:
1: <!-- 性能优化 --> 2: <script> 3: //1、设置一个x 代表前两位 4: let x; 5: //2、设置一个y 代表后两位 6: let y; 7: //3、第三个数是一个自然数的平方 自然数为num(1-10000) 8: let num; 9: outer: for (let x = 0; x < 10; x++) { 10: for (let y = 0; y < 10; y++) { 11: if (x == y) { 12: continue; //终止当前循环 13: } 14: let s = x * 1000 + x * 100 + y * 10 + y; 15: for (let num = 0; num < 100; num++) { 16: if (num * num == s) { 17: console.log(s); 18: break outer; //终止整个循环 19: } 20: } 21: } 22: } 23: </script>
2、统计100~1000的水仙花数
1: <script> 2: for( let i =100; i < 1000;i++){ 3: let x = parseInt(i / 100) ; //百位 4: let y = parseInt((i / 10) % 10); //十位 5: let z =parseInt(i % 10); //个位 6: if(x * x * x + y * y * y + z * z * z == i){ 7: document.write("水仙花数:"+i+ "<br>"); 8: continue; 9: } 10: } 11: </script>
纪念第一天。。。