Представьте четное число n (2 Пример ввода: 110 Вывод: 7+103 Составьте Паскаль программы...

0 голосов
39 просмотров

Представьте четное число n (2 Пример ввода:
110
Вывод:
7+103
Составьте Паскаль программы срочно нужно плиииз


Информатика (15 баллов) | 39 просмотров
0

Непонятно: есть четное число и что дальше, как его представить? В виде суммы двух нечетных? Так решения множество. Или в виде суммы двух простых чисел, как у Вас в примере? Так не любое число можно так представить. Разберитесь и поясните, что требуется.

0

(2<n<100000)

0

В виде суммы простых чисел

0

Так мы проблему Эйлера будем решать?

0

А как предлагаете быть с неоднозначностью? 43+67, 37+73, 31+79, 13+97, 7+103, 3+107, 1+109

Дан 1 ответ
0 голосов
Правильный ответ

Function IsPrime(m: integer): boolean;
var
  i: integer;
  p: boolean;
begin
  p := true;
  for i := 2 to m - 1 do
    if (m mod i) = 0 then p := false;
  IsPrime := p
end;

var
  n, i, j: integer;
  flag: boolean;

begin
  repeat
    Write('Введите натуральное число, большее 2 :');
    Readln(n);
    flag := (n < 2) or (n mod 2 = 1);
    if flag then
      Writeln('Число введено с нарушением, повторите ввод');
  until not flag;
  Writeln('Варианты представления числа в виде суммы двух простых:');
  for i := 1 to n do
    for j := 1 to (n div 2) do
      if (IsPrime(i) and IsPrime(j)) and (i + j = n) then writeln(i, '+', j);
end.

Тестовое решение:

Введите натуральное число, большее 2: 110
Варианты представления числа в виде суммы двух простых:
67+43
73+37
79+31
97+13
103+7
107+3
109+1


(142k баллов)
0

Если надо числа, большие 32767 и в системе TurboPascel, замените тип integer на longint.