Гипотеза Гольдбаха - 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.

Объяснение кода листинга программы

  1. Программа начинается с функции проверки простого числа под названием Simple_Number. Функция принимает целое число в качестве аргумента и возвращает логическое значение True, если число является простым, и False в противном случае.
  2. В основной программе после вывода приветствия пользователю и запроса на ввод четного числа, программа выполняет цикл, который продолжается до тех пор, пока пользователь не введет четное число, большее двух.
  3. Если число нечетное или меньше двух, программа выводит сообщение об ошибке и просит ввести число заново.
  4. После того, как пользователь вводит четное число, программа проверяет, является ли оно простым, используя функцию Simple_Number. Если число не является простым, программа выводит сообщение об ошибке и просит ввести число заново.
  5. Затем программа выполняет цикл, который проходит через все числа от 1 до n-1. Если число меньше или равно половине n, программа разбивает n на два слагаемых и проверяет, являются ли они простыми числами, используя функцию Simple_Number. Если оба слагаемых являются простыми числами, программа увеличивает счетчик nv и выводит сообщение о том, что гипотеза Гольдбаха верна для данного числа.
  6. После окончания цикла программа выводит количество вариантов представления числа n в виде суммы двух простых чисел и ожидает ввода от пользователя.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы