Гипотеза Гольдбаха - Pascal (80203)
Формулировка задачи:
Гольдбахом было высказано предположение, что каждое четное число, большее или равное 4 представимо в виде суммы двух простых. Это предположение до сих пор не доказано и не опровергнуто. Написать программу проверки этой гипотезы для данного четного числа. Результатом выполнения программы должен быть вывод самого числа, если не удалось найти пару простых слагаемых, и вывод пары соответствующих простых чисел, если таковая пара найдена.
Решение задачи: «Гипотеза Гольдбаха»
textual
Листинг программы
function Prost(x:integer):boolean;
var i:integer;
Begin
Prost:=false;
if not odd(x) and (x<>2) { проверяем на чётность }
then exit;
i:=3;
while i*i<=x do { проверяем только нечётные }
begin
if x mod i=0 then exit;
inc(i,2);
end;
Prost:=true;
end;
var n,k:integer;
b:boolean;
begin
repeat
write('Введите четное число больше 3 n=');
readln(n);
until (n>3)and(n mod 2=0);
b:=false;
k:=2;
while(k<=n div 2) and not b do
begin
if Prost(k) and Prost(n-k) then
begin
b:=true;
writeln(n,'=',k,'+',n-k);
end
else k:=k+1;
end;
if not b then write(n)
end.
Объяснение кода листинга программы
- Объявляется функция Prost с аргументом x типа integer и возвращаемым значением boolean.
- Объявляется переменная i типа integer.
- Присваивается значение false переменной Prost.
- Выполняется проверка: если число x не является нечётным и не равно 2, то происходит выход из функции.
- Присваивается значение 3 переменной i.
- Выполняется цикл: пока i умноженное на i меньше или равно x, выполняется следующий блок.
- Если x делится на i без остатка, происходит выход из функции.
- Увеличивается значение i на 2.
- Присваивается значение true переменной Prost.
- Объявляются переменные n, k типа integer и b типа boolean.
- Выполняется цикл repeat-until: пользователю предлагается ввести четное число больше 3, и введенное значение сохраняется в переменной n. Цикл повторяется, пока введенное значение не удовлетворит условию.
- Присваивается значение false переменной b.
- Присваивается значение 2 переменной k.
- Выполняется цикл: пока k меньше или равно n делённое на 2 и b равно false, выполняется следующий блок.
- Если k и n-k являются простыми числами, то b присваивается значение true, и выводится сообщение о том, что число n может быть представлено в виде суммы простых чисел k и n-k.
- Иначе к значению k добавляется 1.
- Если значение b остается false, выводится значение переменной n.