首页 > 解决方案 > 为什么下面的代码会导致超时?

问题描述

我在标题为:另一个主要问题的问题中遇到了这个问题。这是我通过测试用例 1 的解决方案,但对于其他测试用例,它导致运行时错误(由于超时而终止)。

    function processData(input) {
       input=input.split('\n');
       input.shift();
       for(var i=0;i<input.length;i++){
          values(input[i]);
       }
    } 
    function values(num){
       var sum=0;
       num=num.split(' ');
       for(var i=num[0];i<=num[1];i++){
           for(var j=2;j<=i;j++){
               if(i%j==0 && isprime(j)){
                   sum+=j;
               }
           }
       }
       console.log(sum)
    }
    function isprime(val){
       let flag=1;
       for(var i=2;i<val;i++){
            if(val%i==0){
               flag=0;
            }
       }
       if(flag==1){
          return true;
       }
       else{
           return false;
       }
    } 

此代码中导致超时的问题是什么?

更多细节:

输入格式:第一行包含 T 表示测试用例的总数。每个测试用例的第一行包含两个整数 X 和 Y。

约束:

1≤T≤10000

2 ≤ X ≤ Y ≤ 10^5

输出格式: [X, Y] 范围内每个数的素数之和。

标签: javascripttimeoutruntime-error

解决方案


推荐阅读