Гипотеза Гольдбаха - Pascal ABC
Формулировка задачи:
Помогите, пожалуйста:
Дано четное число n > 2;
проверить для этого числа
гипотезу Гольдбаха. Эта гипотеза (по сегодняшний день не опровергнутая и полностью не доказанная)заключается в том, что каждое четное n, большее двух, представляется в виде суммы двух простых чисел. (Определить процедуру, позволяющую распознавать простые числа
).Решение задачи: «Гипотеза Гольдбаха»
textual
Листинг программы
program GoldBach; uses Crt; var n, k, s1, s2, nv : Integer; Sn1, Sn2 : Boolean; function Simple_Number(Sm:Integer): Boolean; {функция проверки: Sm - простое?} var x, i : Integer; begin Simple_Number := False; x := 2; I := 1; while (x<Sm) and (i=1) do begin if Sm mod x = 0 then i := 0 else Inc(x); end; if i=1 then Simple_Number := True; {если флаг равен 1, то Sm - простое} end; {function} begin {main} ClrScr; WriteLn('проверка гипотезы Гольдбаха'); WriteLn('введите любое четное число, большее двух: '); repeat repeat ReadLn(n); if n<2 then WriteLn('Введено число, меньшее двух! Повторите ввод') until n>2; if (n mod 2)<>0 then WriteLn('Введено нечетное число! Повторите ввод') until (n mod 2) = 0; nv := 0; {счетчик вариантов представлений} for k := 1 to n-1 do begin if k<=n/2 then begin s1 := k; {задаем 1-ое слагаемое} s2 := n-k; {задаем 2-ое слагаемое} Sn1 := Simple_Number(s1); {проверка слагаемых на "простоту"} Sn2 := Simple_Number(s2); if Sn1 and Sn2 then {если слагаемые - простые числа} begin Inc(nv); {увеличиваем счетчик вариантов} if nv =1 then WriteLn('для числа ',n,' гипотеза Грольдбаха верна:'); WriteLn(n,' = ', s1, ' + ', s2); {выводим вариант разложения} end; end; end; WriteLn('число вариантов представлений числа ', n, ' в виде суммы двух простых чисел: ', nv); ReadLn; end.
Объяснение кода листинга программы
- Программа начинается с функции проверки простого числа под названием
Simple_Number
. Функция принимает целое число в качестве аргумента и возвращает логическое значениеTrue
, если число является простым, иFalse
в противном случае. - В основной программе после вывода приветствия пользователю и запроса на ввод четного числа, программа выполняет цикл, который продолжается до тех пор, пока пользователь не введет четное число, большее двух.
- Если число нечетное или меньше двух, программа выводит сообщение об ошибке и просит ввести число заново.
- После того, как пользователь вводит четное число, программа проверяет, является ли оно простым, используя функцию
Simple_Number
. Если число не является простым, программа выводит сообщение об ошибке и просит ввести число заново. - Затем программа выполняет цикл, который проходит через все числа от 1 до n-1. Если число меньше или равно половине n, программа разбивает n на два слагаемых и проверяет, являются ли они простыми числами, используя функцию
Simple_Number
. Если оба слагаемых являются простыми числами, программа увеличивает счетчикnv
и выводит сообщение о том, что гипотеза Гольдбаха верна для данного числа. - После окончания цикла программа выводит количество вариантов представления числа n в виде суммы двух простых чисел и ожидает ввода от пользователя.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д