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