20.02.2016, 03:01 | #1 (permalink) |
Новичок
Регистрация: 20.02.2016
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите с задачей на Pascal
Надо составить задачу на паскале с циклическим алгоритмом (while). Вот задача: Числа, у которых НОД равен 1, называются взаимно - простыми. Найти все взаимно - простые числа на отрезке [1;100]. Была бы так же очень признательна, если бы описали, что какая переменная делает и для чего она нужна. Спасибо! |
20.02.2016, 03:01 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На форуме это и ранее обсуждалось, посмотрите Помогите с задачей Помогите с задачей в MATLAB Помогите с задачей на Ассемблере |
20.02.2016, 10:20 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Собственно, комментировать тут особо нечего. Задача решается методом перебора: организуется двойной цикл, генерирующий пары чисел: первое - от 100 до 2, второе - от первого минус единица до 1. Те пары, для которых выполняется условие НОД=1, записываются в выходной файл. Поскольку таких пар в указанном интервале больше 3000, выводить на экран бессмысленно. Код:
Var GCD,j,k:Integer; f:Text; Function Find_GCD(p,q:Integer):Integer; {Ищем Наибольший Общий Делитель (Greatest Common Divisor) двух чисел. Алгоритм таков: проверяем делимость бОльшего числа на меньшее, и в случае отрицательного результата в цикле отнимаем от меньшего по единичке до тех пор, пока не окажется, что оба исходных числа делятся на полученное. Делимость проверяется по равенству нулю остатка от деления.} var i:Integer; begin i:=q; While ((p mod i)>0) or ((q mod i)>0) do i:=i-1; Find_GCD:=i; end; Begin Assign(f,'Result.txt'); Rewrite(f); j:=101; While j>1 do begin j:=j-1; k:=j; while k>1 do begin k:=k-1; GCD:=Find_GCD(j,k); if GCD=1 then writeln(f,j:5,k:10); end; end; Close(f); End. |
|
21.02.2016, 18:26 | #3 (permalink) | |
Новичок
Регистрация: 20.02.2016
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Метки |
pascal, задача, помощь_чайнику, цикл_while |
|
|