Не могу найти ошибку в скрипте

232
05 мая 2017, 18:40

Всего лишь вторую неделю изучаю Основы программирования. Есть задача, надо решить с помощью JavaScript'a. Сижу второй день, туплю ( Перепробывал массу вариантов, результат так и не появился ( Помогите плиз куда смотреть, на что обратить внимание

Определить все четырехзначные числа, сумма цифр которых равна их произведению.

a=1; b=0; c=0; d=0; // числа
n=0; // количество чисел
for(a=1,b=0,c=0,d=0;a<=9,b<=9,c<=9,d<=9;a++,b++,c++,d++)
    if(a+b+c+d == a*b*c*d)
    k=1000*a+100*b+10*c+d;
    n+=1;
    document.write("четырехзначные числа "+n);
Answer 1

Ошибка в определении цикла:

for(a=1,b=0,c=0,d=0;a<=9,b<=9,c<=9,d<=9;a++,b++,c++,d++)

в этом случае переменные на каждой итерации будут меняться одновременно, таким образом будет всего 8 итераций.

Кроме того, чтобы в теле цикла выполнилось несколько операций, его нужно обернуть в фигурные скобки, иначе внутри цикла будет выполнена только первая, в данном случае

if(a+b+c+d == a*b*c*d)
    k=1000*a+100*b+10*c+d;

Чтобы выбранный подход заработал, нужно 4 цикла:

var n = 0, 
  nums = []; 
for (a = 1; a <= 9; a++) 
  for (b = 0; b <= 9; b++) 
    for (c = 0; c <= 9; c++) 
      for (d = 0; d <= 9; d++) { 
        if (a + b + c + d == a * b * c * d) { 
          k = 1000 * a + 100 * b + 10 * c + d; 
          n += 1; 
          nums.push(k); 
        } 
      } 
document.write("четырехзначные числа " + n); 
document.write('<br>', JSON.stringify(nums));

Но можно пойти с другой стороны: перебрать в одном цикле все четырехзначные числа, и уже внутри проверять подходит число или нет.

Например так:

var n = 0, 
  nums = []; 
for (var i = 1000; i < 10000; i++) { 
  if (i.toString().split('').reduce((a, b) => +b + a, 0) == i.toString().split('').reduce((a, b) => +b * a, 1)) { 
    n += 1; 
    nums.push(i); 
  } 
} 
document.write("четырехзначные числа " + n); 
document.write('<br>', JSON.stringify(nums));

Answer 2

Спасибо за помощь. Разобрался, массивы я еще не изучал, но был близок :) Еще раз спасибо.

READ ALSO
Почему alert срабатывает два раза?

Почему alert срабатывает два раза?

В общем загружаем и показываем картинку, скачанную с сервераПроблема в том, что если сервер возвращает 404, то alert выскакивает 2 раза

263
AJAX JSON Как словить ответ, если не ответ не json

AJAX JSON Как словить ответ, если не ответ не json

Отправляю запрос на сервер через AJAXНа сервере очень тяжелый алгоритм с кучей классов и функций

217
Как сделать селектор с привязкой к файлу PHP?

Как сделать селектор с привязкой к файлу PHP?

Здравствуйте, как сделать селекторЧтобы сначала был выбор стран, к стране были прикреплены определенные города

185
Форма контакта не отсылает сообщеение

Форма контакта не отсылает сообщеение

Всем привет! Я попытался установить форму контакта на сайте и она хорошо работает и даже пишет, что письмо было оотослано, но письмо так и не доходит...

187