Помогите решить две задачи на JS [закрыт]

179
19 октября 2021, 13:40
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

Пытаюсь решить уже часа два, помогите: 1. Найти натуральное число из интервала от а до b, у которого количество делителей максимальна. Если таких чисел несколько, то должно быть найдено максимальное из них. 2. Дано натуральное число. Найти числа, образованные из исходного приписыванием к нему такого же числа. Буду благодарен за решение на js. 

Answer 1

Аффтару: Ответ написан из-за интереса в комментариях. Обычно не принято отвечать на вопросы "сделайте за меня" )

Решение первой задачи: Из интервала, нахождение числа с максимальным количеством делителей.

console.log( maxDividersFromRange(1, 100) ); 
 
function maxDividersFromRange(a, b){ 
  let max = findDividers(a).length; // Сразу находим кол-во делителей первого числа 
  // Изначально считаем его самым большим. 
  let info = { 
    [max]: [a] 
  }; // Каждое найденное КОЛИЧЕСТВО делителей будет являться ключем в объекте info 
  // И будет хранить в себе массив чисел (пока что там 1 элеент, число [a]) 
   
  for( let i = a + 1; i <= b; i++ ){ 
    let divs = findDividers(i).length; 
    if( info[divs] ){ // Если в объекте уже есть это количество делителей как ключ 
      info[divs].push( i ); // Добавить в его массив текущее число 
    } else { // Иначе - создать новый ключ и массив с [текущим числом] 
      info[divs] = [i]; 
    } 
    if( divs > max ){ 
      max = divs; // Обновляем максимальное количество делителей, если новое оказалось больше него. 
    } 
  } 
 
  let foundNums = info[max]; // Массив чисел с макс. количеством делителей. 
  // Можно было циклом пройтись по нему и искать самое большое число. 
  // Но из предыдущих шагов понятно, что самым большим окажется последний элемент 
  maxOfThem = foundNums[foundNums.length - 1]; // Сразу берем его. 
   
  setTimeout( () => console.log( JSON.stringify(info) ) ); // Чтобы было видно что происходит 
   
  return maxOfThem + ', Делители: ' + findDividers(maxOfThem).join(", "); 
} 
 
function findDividers(num){ 
  let dividers = []; 
  let temp = num; 
   
  while( temp >= 2 ){ 
    for( let i = 2; i <= temp; i++ ){ 
      if( temp % i == 0 ){ 
        temp = temp / i; 
        dividers.push(i); 
        break; 
      } 
    } 
  } 
  return dividers; 
}

Массив чисел "с одним делителем" — По совместительству простые числа))

Answer 2
  1. Первая задача так ?

function sum(a, b, c){ 
 
  for( let i = 0; i < arguments.length; i++ ){ 
    if( arguments[i] > a && arguments[i] < c ){ 
      console.log( arguments[i] ) 
    } 
  } 
 
} 
sum(2, 3, 4)

  1. Вторая задача так ?
    function number(a){ 
      return a += a; 
      // return a *= a; 
    } 
    console.log( number(2) );
READ ALSO
Стоит ли делать единую функцию обработки ajax запросов?

Стоит ли делать единую функцию обработки ajax запросов?

У меня есть длинный основной файл JS и все множество блоков кода где данные подгружаются через AJAx

106
Как передать в конвертор значение переменной?

Как передать в конвертор значение переменной?

У меня в таблице (WPF DataGrid) строки в зависимости от ряда условий должны иметь свойство IsEnabled True или FalseДля анализа условий написал простенький...

257
Ошибка во время миграции

Ошибка во время миграции

Проект приложение windows service/служба, после какого то момента перестала работать миграция и получаю вот такую ошибку, не могу понять чего он трогает...

153