Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.11.2020, 22:07
Новичок на форуме
Отправить личное сообщение для junior29 Посмотреть профиль Найти все сообщения от junior29
 
Регистрация: 12.11.2020
Сообщений: 3

Найти максимальное общее значение которое нацело делит два заданных числа
Есть такая задача "Заданы две переменные для двух целых чисел, найти максимальное общее значение которое нацело делит два заданных числа."
Из условия я понимаю, что у нас к примеру есть let a = 20; let b = 30; максимальное общее значение которое нацело делит эти два числа будет 10. Но как мне все это реализовать при помощи цикла?
Ответить с цитированием
  #2 (permalink)  
Старый 12.11.2020, 22:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

junior29,
function fun(a, b)
{ a > b || ([a, b] = [b, a]);
  let k = 1;
  for (let i = 2; i <= b; ) {
      if(!(b % i) && !(a % i) ) {
      b /= i;
      a /= i;
      k *= i;
      }
      else i++
  }
  return k
}
alert(fun(20, 30));

Последний раз редактировалось рони, 12.11.2020 в 23:22.
Ответить с цитированием
  #3 (permalink)  
Старый 12.11.2020, 22:53
Новичок на форуме
Отправить личное сообщение для junior29 Посмотреть профиль Найти все сообщения от junior29
 
Регистрация: 12.11.2020
Сообщений: 3

А можно как-то выполнить не используя функцию?
Ответить с цитированием
  #4 (permalink)  
Старый 12.11.2020, 22:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

junior29,
так не используйте.
let k = 1, a = 20, b = 30;
  for (let i = 2; i <= b && i <= a; ) {
      if(!(b % i) && !(a % i) ) {
      b /= i;
      a /= i;
      k *= i;
      }
      else i++
  }

alert(k);

Последний раз редактировалось рони, 12.11.2020 в 23:28.
Ответить с цитированием
  #5 (permalink)  
Старый 13.11.2020, 08:00
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от junior29
найти максимальное общее значение которое нацело делит два заданных числа
Иными словами, требуется наибольший общения делитель. Советую реализовать алгоритм Евклида или бинарный алгоритм (см. Википедию). Вариант от Рони может работать долго, если числа здоровенные и хотя бы одно из них простое.
Ответить с цитированием
  #6 (permalink)  
Старый 13.11.2020, 09:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Alexandroppolus,
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти максимальное и минимальное значение в элементах DOM smart-create Events/DOM/Window 17 11.07.2017 13:36
Проблемы с выпадающим списком JavaScript ursus102 Общие вопросы Javascript 0 16.01.2016 19:30
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42