2014-03-02 7 views
0

В настоящее время я работаю над проблемой, которая ищет низкую границу и высокую оценку. Эти два числа будут определять поле чисел для коэффициента. У меня есть код, который находит факторы, но теперь мне нужно сделать внешний цикл, чтобы запустить список. Я понимаю, что нужно делать, но у меня проблемы с самой кодировкой. (Очевидно, вам нужно пробежать список чисел от низкого до высокого). Любая помощь будет большой. У меня возникли проблемы, когда я пытаюсь обновить переменную «num», которая является нижней границей, или число, которое учитывается в этой точке.Вложенный цикл в JavaScript

function calculate(num){ 
    var int = 2;  
    var num = document.getElementById("num").value; 
    var high = document.getElementById("high").value; 
    var str = num + ": "; 


    if (num <= high){ 

    for (var i = 2; i <= num; i++){ 
     if(num % i == 0){ 
      str += i + ","; 

     } 
     num++; 
    } 
    document.getElementById("outputArea").innerHTML = str; 
    } 

} 

В настоящее время это дает мне точный результат только небольшого числа. Так что, если я вход 12, он говорит:

12: 2, 3, 4, 6, 12

Да, я в настоящее время пытаюсь получить программу, чтобы пройти через каждый номер, включая низкие и высокие и фактор каждый. В конце концов, это должно быть показано в нескольких строках в теге textarea.

Как это:

12: 2,3,4,6,12, 13: 1, 13 и т.д ....

+0

Какой результат должен получить код и что производит ваша текущая версия? Просьба предоставляет пример ввода/вывода. –

+1

@FelixKling - Я думаю, что он пытается решить P против NP, вы можете решить его для нас? – adeneo

+0

Думаю, я просто не понимаю, что вы пытаетесь сделать с кодом. Вы хотите перебирать все числа от «low» до «high» и учитывать каждый из них? И если да, что вы хотите сделать с результатом? Может быть, мне не хватает чего-то действительно очевидного ... –

ответ

0

Я предполагаю, что вы хотите сделать что-то вроде этого :

var num = 12; 
var high = 15; 

var str = ''; 

while (num <= high) { 
    str += num + ": "; 
    for (var i = 1; i <= num; i++) { 
     if (num % i == 0) { 
      str += i + ","; 
     } 
    } 
    str += '\n'; 
    num++; 
    alert(str); 
} 

, который показывает:

12: 1,2,3,4,6,12, 
13: 1,13, 
14: 1,2,7,14, 
15: 1,3,5,15, 

основной насущной проблемой в вашем код был неправильным размещением num ++

Большая проблема для меня понять то, что, по вашему мнению, вы достигнете с помощью этого алгоритма, но это совсем другая история.

Для получения дополнительной информации, вы можете прочитать статьи, такие как this one.

Смежные вопросы