JavaScript中for循环超时终止(TLE)问题的解决方法
解决Project Euler第1题超时问题
题目要求
- 给定数字
n,计算所有小于n的3和5的倍数之和; - 输入包含
t个数字,数字以换行分隔。
遇到的问题
我能算出正确结果,但6个测试用例里有2个触发了time limit exceeded超时错误,剩下4个能正常通过。
我的尝试代码
版本1
function main() { var t = parseInt(readLine()); for (var a0 = 0; a0 < t; a0++) { var n = parseInt(readLine()); // 我的代码开始 let total = 0; for (let x = 0; x < n / 3; x++) { total += 3 * x; } for (let x = 0; x < n / 5; x++) { if (x % 3 !== 0) total += 5 * x; } console.log(total) // 我的代码结束 } }
版本2(优化乘法操作)
function main() { var t = parseInt(readLine()); for (var a0 = 0; a0 < t; a0++) { var n = parseInt(readLine()); // 我的代码开始 let total = 0; let totalTemp = 0 for (let x = 0; x < n / 3; x++) { total += x; } for (let x = 0; x < n / 5; x++) { if (x % 3 !== 0) totalTemp += x; } total = totalTemp * 5 + total * 3; console.log(total); // 我的代码结束 } }
求助
现在需要解决超时问题,有没有更高效的计算方法?
内容的提问来源于stack exchange,提问作者asnath085
相关产品推荐
相关产品推荐

