Re: Наибольший общий делитель :)
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 04.09.02 07:59
Оценка: 12 (2)
Здравствуйте Vladik, Вы писали:

V>Привет!


V>Я, конечно, извиняюсь... Но может напомните, а?




    int a = 18;
    int b = 45;
    int c;

    while( b != 0)
    {
      c = a % b;
      a = b;
      b = c;
    }
printf("Результат: %i\n",a);
Re: Наибольший общий делитель :)
От: Hacker_Delphi Россия  
Дата: 04.09.02 15:47
Оценка: -2
Здравствуйте Vladik, Вы писали:

V>Привет!


V>Я, конечно, извиняюсь... Но может напомните, а?

Классический, со школы:
Раскладываем на простые множители и все совпавшие перемножаем, полученое число и есть ответ.
З.Ы. если берем число 8 разложение = 2*2*2
Другоих алгоритмов вот так сходу и не припомню...
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re: Наибольший общий делитель :)
От: Alexander Shargin Россия RSDN.ru
Дата: 04.09.02 07:58
Оценка: 8 (1)
Здравствуйте Vladik, Вы писали:

V>Я, конечно, извиняюсь... Но может напомните, а?


http://alglib.chat.ru/theoryn/
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re: Наибольший общий делитель :)
От: OlegO Россия http://www.mediachase.ru
Дата: 04.09.02 07:58
Оценка: 8 (1)
Здравствуйте Vladik, Вы писали:

V>Привет!


V>Я, конечно, извиняюсь... Но может напомните, а?


http://algolist.manual.ru/maths/teornum/nod.php
С уважением, OlegO.
Re: Наибольший общий делитель :)
От: NikNRudoy Россия  
Дата: 04.09.02 08:24
Оценка: -1
Здравствуйте Vladik, Вы писали:

V>Привет!


V>Я, конечно, извиняюсь... Но может напомните, а?


я думаю так вот например 2 числа 150 и 125, раскладываешь их на множители (простые чила, кот. делятся только на елиницу и само на себя), получаешь:
150 = 5 * 5 * 3 * 2
125 = 5 * 5 * 5
ну и точно не припомню, но исключаешь в 150 3 * 2 (их просто нет в 125), а в 125 исключаешь одну 5, получаем 25, иначе говоря, в разложенных числах надо оставить те, которые есть в обоих (5*5)
Наибольший общий делитель :)
От: Vladik Россия  
Дата: 04.09.02 07:54
Оценка:
Привет!

Я, конечно, извиняюсь... Но может напомните, а?
Как все запущенно...
Re[2]: Наибольший общий делитель :)
От: vladsm Россия  
Дата: 06.09.02 05:43
Оценка:
Здравствуйте, NikNRudoy и Hacker_Delphi, Вы писали:

NNR>раскладываешь их на множители (простые чила, кот. делятся только на елиницу и само на себя)

...
HD>Раскладываем на простые множители и все совпавшие перемножаем, полученое число и есть ответ.
HD>З.Ы. если берем число 8 разложение = 2*2*2
HD>Другоих алгоритмов вот так сходу и не припомню...

Если вам удастся придумать эффективный алгоритм разложения числа на простые множители, то вам гарантированны слава, деньги и т.д. И, пожалуй, куча "троечек" к тем нулям, которые вы успели схватить.
Re[3]: Наибольший общий делитель :)
От: Hacker_Delphi Россия  
Дата: 06.09.02 12:48
Оценка:
Здравствуйте vladsm, Вы писали:

V>Если вам удастся придумать эффективный алгоритм разложения числа на простые множители, то вам гарантированны слава, деньги и т.д. И, пожалуй, куча "троечек" к тем нулям, которые вы успели схватить.

Ну... меня же просили тока простой алгоритм... я ж не говорил, что он — оптимален
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[4]: Наибольший общий делитель :)
От: achp  
Дата: 06.09.02 12:50
Оценка:
Здравствуйте Hacker_Delphi, Вы писали:

HD>Ну... меня же просили тока простой алгоритм... я ж не говорил, что он — оптимален


А алгоритм Евклида со школы уже позабылся?
Re[5]: Наибольший общий делитель :)
От: Hacker_Delphi Россия  
Дата: 06.09.02 14:33
Оценка:
Здравствуйте achp, Вы писали:

A>Здравствуйте Hacker_Delphi, Вы писали:


HD>>Ну... меня же просили тока простой алгоритм... я ж не говорил, что он — оптимален


A>А алгоритм Евклида со школы уже позабылся?

угу давно ето было
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[6]: Наибольший общий делитель :)
От: vladsm Россия  
Дата: 06.09.02 15:18
Оценка:
Здравствуйте Hacker_Delphi, Вы писали:

A>>А алгоритм Евклида со школы уже позабылся?

HD>угу давно ето было

Ну,.. надо же держать себя в форме
Re: Наибольший общий делитель :)
От: Alexander Kotelovich Латвия  
Дата: 23.10.02 17:48
Оценка:
Здравствуйте Vladik, Вы писали:

V>Привет!


V>Я, конечно, извиняюсь... Но может напомните, а?


int mindn (int x,int y)                                                                                                                
{                                                                                                                                   
    return !x ? y : mindn (y % x, x) ;
}
Re[2]: Глубина рекурсии?
От: Кодт Россия  
Дата: 24.10.02 10:21
Оценка:
Здравствуйте Alexander Kotelovich, Вы писали:

AK>
AK>int mindn (int x,int y)
AK>{
AK>  return !x ? y : mindn (y % x, x) ;
AK>}
AK>

(наверное, все же maxdn?)

А оценку глубины рекурсии не дадите? Скажем, на множестве аргументов (unsigned long,unsigned long)?

И если да — то какие комбинации наиболее долго раскручиваются?
Перекуём баги на фичи!
Re: Наибольший общий делитель :)
От: KACTET  
Дата: 28.10.02 10:04
Оценка:
int a,b,c; \\a,b — числа, причём a ДОЛЖНО быть больше b

for(;)
{
c = a%b;
if (c == 0)
break; \\НОД — b
else {
a = b;
b = c;
}
}

Писал в спешке, поэтому может что-то перепутал, поищи в Сети. Это называется "алгоритм Евклида".
Re: Наибольший общий делитель :crash:
От: Кодт Россия  
Дата: 28.10.02 12:49
Оценка:
Предлагаю объявить мораторий на публикацию алгоритма Евклида в любых его вариантах. Хватит уже!
(За исключением тех случаев, когда вы хотите сказать что-то принципиально новое).

Вот например, такой вопрос: оценка времени вычисления.
В частности, на каких числах НОД вычисляется дольше всего?
Перекуём баги на фичи!
Re[2]: Наибольший общий делитель :crash:
От: max_babenko Россия  
Дата: 29.10.02 09:10
Оценка:
К>Вот например, такой вопрос: оценка времени вычисления.
К>В частности, на каких числах НОД вычисляется дольше всего?
Число шагов деления в алгоритме Евклида -- логарифмическое с
основанием равным золотому сечению. Это следует из такого
утверждения: если меньшее из чисел, для которых запущен Евклид,
меньше F_{k+1} (F_k -- числа Фибоначчи), то число шагов деления
не больше k (теорема Ламэ, кажется).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.