Почему следующий код приводит к Timeout? - PullRequest
1 голос
/ 03 мая 2020

Я столкнулся с этой проблемой в задаче под названием: Другая основная проблема . Вот мое решение, которое прошло тест-кейс-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].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...