Показать сообщение отдельно
  #3 (permalink)  
Старый 03.01.2013, 19:07
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Сообщение от Deff
Вообще эта задача поиска наименьшего общего кратного
Вы имеете ввиду наибольший общий делитель (НОД)?

Если да, то с ним как раз нет проблем.

function NOD(a,b){ while ((a!=0) && (b!=0)) {if (a>b) {a%=b} else {b%=a}} return (a+b) }

Например, для трех чисел n1, n2, n3 (целые любого знака)

NOD( NOD(Math.abs(n1),Math.abs(n2)), Math.abs(n3) )

для четырех n1, n2, n3, n4

NOD( NOD(NOD(Math.abs(n1),Math.abs(n2)), Math.abs(n3)), Math.abs(n4) )

Самое интересное в пунктах 2,3,4

Цитата:
2. если A_1≠0, то на выходе он >0, если A_1=0, то на выходе A_2>0; если A_1=0 и A_2=0, то на выходе A_3>0 и т.д.; т.е. чтобы после упрощения первый, не равный нулю коэффициент был положительным;
3. если какой-либо коэффициент, кроме A_n, равен 1 (или -1 с учетом п.2), то не возвращать его.
4. если какой-либо коэффициент A_k, равен 0, то не возвращать A_k*x_k.
Ответить с цитированием