@aleksey_vol

Переписал программу с Pascal на JS и она не работает. В чем причина?

Сама программа должна находить все целые числа из промежутка от 1 до 300 у которых пять делителей.
Код Pascal
var
  i, j, k: integer;
  
begin
  for i := 2 to 300 do
  begin
    k := 0;
    for j := 2 to i do
      if (i mod j = 0)and (k < 6) then inc(k);
    if k = 5 then write(' ', i);  
  end
end.

Код JS
for(i=2; i<300; i++){
	k=0;
	for(j=2; j<i; j++){
		if(i%j===0 && k<6){
			k++;
		}
	}
	if (k===5){
		alert(i);
	}
}
  • Вопрос задан
  • 412 просмотров
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Насколько я понимаю, в диапазоне 1-300 только у числа 46 пять делителей, а у остальных чисел больше или меньше. (И на самом деле шесть, единицу вы почему-то не считаете)

Из-за условия if(i%j===0 && k<6) зачастую переменная k достигает шести. Я вот немножко изменил вывод лога https://jsfiddle.net/Lywpupne/
Ответ написан
Комментировать
FFxSquall
@FFxSquall
Могу писать код, могу не писать
Ошибка в условии во втором цикле. Правильный код https://jsfiddle.net/Lffjc076/
j должно быть не меньше i, а меньше или равно. Иначе число не поделится само на себя и делителей будет 4, а не 5
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы