Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти максимальное общее значение которое нацело делит два заданных числа (https://javascript.ru/forum/misc/81353-najjti-maksimalnoe-obshhee-znachenie-kotoroe-nacelo-delit-dva-zadannykh-chisla.html)

junior29 12.11.2020 22:07

Найти максимальное общее значение которое нацело делит два заданных числа
 
Есть такая задача "Заданы две переменные для двух целых чисел, найти максимальное общее значение которое нацело делит два заданных числа."
Из условия я понимаю, что у нас к примеру есть let a = 20; let b = 30; максимальное общее значение которое нацело делит эти два числа будет 10. Но как мне все это реализовать при помощи цикла?

рони 12.11.2020 22:38

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));

junior29 12.11.2020 22:53

А можно как-то выполнить не используя функцию?

рони 12.11.2020 22:56

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);

Alexandroppolus 13.11.2020 08:00

Цитата:

Сообщение от junior29
найти максимальное общее значение которое нацело делит два заданных числа

Иными словами, требуется наибольший общения делитель. Советую реализовать алгоритм Евклида или бинарный алгоритм (см. Википедию). Вариант от Рони может работать долго, если числа здоровенные и хотя бы одно из них простое.

рони 13.11.2020 09:03

Alexandroppolus,
:thanks:


Часовой пояс GMT +3, время: 23:34.