Хелп - паскаль
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Хелп - паскаль - 2005-04-09 23:38:27
|
|
|
Oleg330
Сообщений: 12
Оценки: 0
Присоединился: 2005-04-09 00:52:21
|
Народ выручайте, нужно решить задачку на Паскале. вот :Определить являются ли два заданных числа взаимно простыми(взаимно простые числа не имеют общих делителей, кроме единицы). Подскажите алгоритм по которому должна решаться эта задачка, а как написать думаю сам допру. Заранее благодарен.
|
|
|
Хелп - паскаль - 2005-04-10 00:49:16
|
|
|
kuz
Сообщений: 18
Оценки: 0
Присоединился: 2005-04-09 20:15:54
|
Мнем. Ну самое первое и тупое, что приходит в голову - делить их в цикле на все натуратьные числа по очереди и смотреть рабен ли округленный результат деления неокругленному, и если для обоих равен - тогда сразу писать мол нихрена не являютс они взаимнопростыми, а если не равен - ито дпльше шпарить. Я себе так примерно представляю
var a,b,с,i: integer; begin //всякие вступления и считываение чисел if a > b then c:= a else c:= b; for i:= 2 to c do begin if (a/i = int(a/i) ) and (b/i = int(b/i)) then begin WriteLn('nifiga ne yavljajetsja'); Application.Terminate; //ну или еще как то прогу заверши end; end; if i=c then WriteLn('yavljajutsja'); end;
вроде как-то так, за синтаксис сорри если что не правильно - давно на паскале не писал ничего.
|
|
|
Хелп - паскаль - 2005-04-10 02:06:57
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
Алгоритм Евклида. Для поиска наибольшего общего делителя. Исходя из предположения что a>b, его можно записать так:
1. Если a равно 0 то мы победели. в b лежит НОД 2. `r:=a mod b; a:=b; b:=r;' и перейти к шагу 1.
ЗЫ не пишу на паскале ибо боюсь кучу синтаксических ошибок наделать.
|
|
|
Хелп - паскаль - 2005-04-10 02:12:17
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
Да, ещё. Я всё-таки открыл Кнута, этот алгоритм не будет работать для отрицательных чисел, эту ситуёвину надо обрабатывать отдельно и работать с абсолютными величинами.
|
|
|
Хелп - паскаль - 2005-04-10 12:23:44
|
|
|
ни разу не дигитал ака свалил
Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
|
rgo всё правильно сказал. Алгоритм Евклида: уменшаем каждыи раз большее из чисел на веоичину меньшегодо тех пор пока значения не станут равны… зы числа должны быть только натуральными
|
|
|
Хелп - паскаль - 2005-04-10 23:23:43
|
|
|
Oleg330
Сообщений: 12
Оценки: 0
Присоединился: 2005-04-09 00:52:21
|
|
|
|
Хелп - паскаль - 2005-04-10 23:25:43
|
|
|
Oleg330
Сообщений: 12
Оценки: 0
Присоединился: 2005-04-09 00:52:21
|
|
|
|
Хелп - паскаль - 2005-04-10 23:26:54
|
|
|
Oleg330
Сообщений: 12
Оценки: 0
Присоединился: 2005-04-09 00:52:21
|
|
|
|
Хелп - паскаль - 2005-04-10 23:27:46
|
|
|
Oleg330
Сообщений: 12
Оценки: 0
Присоединился: 2005-04-09 00:52:21
|
Спасибо за советы, но у меня возникло несколько вопросов:
1. Что делает функция Int?
2.Прогу, которую дал kuz не корректно работает вот она(во всяком случае я её так списал): program Dvachisla; var a,b,c,i: Integer; Begin WriteLn('‚1 chislo'); ReadLn(a); WriteLn('‚2chislo'); ReadLn(b); if a>b then c:=a else c:=b; for i:=2 to c do begin if(a/i=int(a/1)) and (b/i=int(b/i)) then begin WriteLn('ne javlautsa); end; end; if i=c then WriteLn('javlautsa); ReadLn; end.
3. Я сейчас читаю книжку "Изучаем turbo Pascal" От издательства "Питер".что посоветуете почитать, чтобы новичку понятно было(чтоб не очень нрузило) и чтоб с премерами?
|
|
|
Хелп - паскаль - 2005-04-11 08:30:44
|
|
|
Lex_Voodoo
Сообщений: 7328
Оценки: 0
Присоединился: 2004-12-07 13:55:12
|
>> 1. Что делает функция Int? Надо полагать, возвращает целочисленное значение аргумента.
|
|
|
Хелп - паскаль - 2005-04-11 21:31:28
|
|
|
Oleg330
Сообщений: 12
Оценки: 0
Присоединился: 2005-04-09 00:52:21
|
Ну че народ ктонить надумал чего?
|
|
|
Хелп - паскаль - 2005-04-13 02:31:44
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
ну чё Oleg330 дочитал книжку?
|
|
|
|
|