Это конечно говнокод, но ошибка только одна:
var n = prompt('введите начальное число диапозона', '0');
var k = prompt('введите конечное число диапозона', '0' );
prompt возвращает строки а не числа, поэтому нужно конвертировать в число, например так:
var n = parseInt(prompt('введите начальное число диапозона', '0'), 10);
var k = parseInt(prompt('введите конечное число диапозона', '0' ), 10);
через Number или parseInt.
Вообще, полезно знать разницу при сравнении чисел и строк:
9 < 10 // true
'9' < '10' // false
Во втором случае получается «ложь», потому что строки сравниваются по кодам символов, начиная с первого символа, те '9' < '1'. Смотрим коды символов:
'9'.charCodeAt(0) // 57
'1'.charCodeAt(0) // 49
57 больше 49, поэтому сравнение заканчивается, выдавая значение false.
Поэтому условие цикла n <= k работает не как ожидается.