Решение 50 типовых задач по программированию на языке Pascal Дата размещения сборника в сети


Задача № 36. Найти наименьший нетривиальный делитель двух заданных чисел


Download 1.52 Mb.
Pdf ko'rish
bet49/77
Sana03.02.2023
Hajmi1.52 Mb.
#1152062
TuriРешение
1   ...   45   46   47   48   49   50   51   52   ...   77
Bog'liq
Задачи на Pascal

Задача № 36. Найти наименьший нетривиальный делитель двух заданных чисел 
Формулировка. Даны натуральные числа m и n. Вывести на экран их наименьший нетриви-
альный делитель или сообщить, что его нет.


Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal» 
44 
Решение. Задача похожа на задачу 15, в которой поиск минимального делителя осуществ-
лялся с помощью цикла: 
for i := 2 to n do begin 
if n mod i = 0 then begin 
writeln(i); 
break 
end 
end; 
Здесь все просто: проверяем все числа от 2 по возрастанию – если нашли делитель, выводим 
его на экран и выходим из цикла с помощью break. В нашем же случае нужно проверять делимость 
двух введенных чисел. При этом цикл должен проходить по всем i от 2 до минимального из чисел 
m 
и n (назовем его min), так как оно может быть наименьшим нетривиальным делителем, когда оно 
простое. Например, для чисел 17 и 34 таковым является 17. 
Найти наименьшее из двух чисел можно так: 
if n < m then min := n else min := m; 
Кстати, теперь в цикле мы должны не просто вывести на экран найденный делитель, а сохра-
нить его в некоторую переменную (mindiv), которая до входа в цикл будет равна 1 (или 0), чтобы 
проверить, выполнилось ли условие делимости в цикле. Если да, то необходимо вывести значение 
наименьшего общего делителя, а если нет, и mindiv все еще равно 1 (или 0), то вывести сообщение 
об отсутствии делителя. 
Код: 
1.
program MinDivisor; 
2.
3.
var 
4.
m, n, i, min, mindiv: word; 
5.
6.
begin 
7.
readln(m, n); 
8.
mindiv := 1; 
9.
if n < m then min := n else min := m; 
10.
for i := 2 to min do begin 
11.
if (n mod i = 0) and (m mod i = 0) then begin 
12.
mindiv := i; 
13.
break 
14.
end 
15.
end; 
16.
if mindiv <> 1 then writeln(mindiv) else writeln('No divi-
sors!') 
17.
end. 

Download 1.52 Mb.

Do'stlaringiz bilan baham:
1   ...   45   46   47   48   49   50   51   52   ...   77




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling