Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ процедуры

Автор: СТАНИСЛАВ 18.04.2006 22:23

Здравствуйте обращаюсь к вам с просьбой помоч в решении.
Дана такая задача:

Составить программу, проверяющую, является ли данные три числа взаимно простыми.

помогите с решением
Как я поня взаимно простые числа это числа которые свободно делятся между собой и делять причём без остатка. Такими числами могут служить 2, 4, 8 все они делятся друг на друго без остатк а это значит, что можно считать их взаимно простыми.Сложность для меня заключается в том что я не понимаю как это выражение представить в виде процедуры и как вообще отобразить её в программе. Подскажите каму по силам эта задача, у тех кого я спрашивал даже не знали с чего сдесь начать вот и я не понимаю.


Пмогите пожалуста.

Автор: Ozzя 18.04.2006 22:48

Цитата
ВЗАИМНО ПРОСТЫЕ ЧИСЛА натуральные числа, не имеющие общих делителей, отличных от 1; напр., 15 и 16.

Автор: СТАНИСЛАВ 19.04.2006 1:03

Дружище помоему ты не прав мне сам преподователь сказал что такое взаимно простые числа.
Темболее ты указал всего два когда нужно три. Я согласен что это натуральные числа, но причём здесь 1 если любое целое число разделить на 1 то будет этоже число

Автор: volvo 19.04.2006 1:06

СТАНИСЛАВ, преподаватель не прав... Ищи определение взаимно простых чисел в учебнике или в интернете, и ты в этом убедишься.

Как найдешь - придешь и расскажешь, ЧТО же такое взаимно простые числа. А если ты пришел сюда спорить - то иди и спорь с преподавателем. В частности - на основании вот этого:
http://encycl.accoona.ru/?id=10820

Автор: Clerick 19.04.2006 1:24

Если наибольший общий делитель чисел (в твоем случае трех) равен единице, то они называются взаимно простыми! (Справочник школьника по математике)

Автор: kornet 19.04.2006 16:41

Цитата
Составить программу, проверяющую, является ли данные три числа взаимно простыми.

помогите с решением



program zada4a;

var a, b, c : integer;
z : string;

procedure caution (a, b, c : integer);

var d, e, f, g, num : integer;
x : Boolean;

begin

e := 1;
f := 1;
g := 1;


num := 31000;
x := (e = 0) and (f = 0) and ( g = 0);

while (x <> True) and (num <> 1) do begin

e := a mod num;
f := b mod num;
g := c mod num;

x := (e = 0) and (f = 0) and ( g = 0);
num := num - 1;

end;

if (x = false ) then
begin

Writeln ('Eti 4isla vzaimno prostie');
end

else if (x = true) then
begin

Writeln ('Eti 4isla ne vzaimno prostie');

end;

end;



begin

Writeln ('Enter ');

Readln (a, b, c);

caution (a, b, c);

readln (z);

end.


P.S. Я сам только учу Паскаль... Возможно эту прогу можно написать более лучшим способом.
P.S.S. Поменял местами true и false...теперь вроде бы правильно.

Автор: volvo 19.04.2006 16:50

kornet, правда?
А ты проверял свою программу? Какие делители кроме единицы есть у чисел 15, 16, 17 ?

Так что же твоя программа говорит, что они НЕ взаимно простые???

Цитата(Правила Раздела)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
Это относится ко всем, между прочим, и ты - не исключение...

Написали же, что надо проверять НОД:
function GCD (A: integer;  B: integer): integer;
begin
while (a <> 0) and (b <> 0) do
if a >= b then
a := a mod b
else
b := b mod a;
GCD := a + b;
end;

var a, b, c: integer;
begin
writeln('enter numbers:'); readln(a, b, c);

if GCD(a, b) * GCD(a, c) * GCD(b, c) = 1 then writeln('Yes')
else writeln('No');
end.

Автор: СТАНИСЛАВ 19.04.2006 19:12

Спасибо всем что открыли мне глаза теперь я понял что значат взаимно простые числа.Надеюсь больше не буду задовать таких "неправильных вопросов" Я вижу что спорить с вами сдесь бесполезно. Очень благодарен за вашу помощ.