Найти все подмножества обладающие следующим условием: сумма всех элементов — есть простое число. Исходное множество состоит из 5 элементов — Pascal(Паскаль)

Алгоритм решения состоит в том, что происходит генерация подмножеств (перевод в бинарный код способом из десятичного в двоичное значение) и проверка каждого кода по условию.

program poisk;
var
   x,y,z,i,j,t,rez,rez1,prost: integer;
   a1,b1: array [1..5] of integer;
   label 10;
begin
   writeln('Введите элементы множества A');
   for i:=5 downto 1 do
        begin
        readln(y);
        b1[i]:=y;
       end;
   for i:=1 to 31 do
    begin
      x:=i;
      t:=0;
      for j:=1 to 5 do
      a1[j]:=0; 
      while x<>1 do
       begin
         z:=x mod 2;
       x:=x div 2;
       t:=t+1;
      a1[t]:=z;
     end;
    t:=t+1;
    a1[t]:=1;

  rez:=0;
  for j:=5 downto 1 do
  rez:=b1[j]*a1[j]+rez;

  prost:=1;
  rez1:=rez;
  if (rez=1) or (rez=2) then goto 10;
  for j:=2 to rez1-1  do
      if (rez mod j)=0 then prost:=0;

10:  if prost=1 then
       begin
       for j:=5 downto 1 do
        if a1[j]=1 then
           begin
           write(b1[j]);
           write(',');
           end;
       writeln;
       end;

end;
readln;
end.

Leave a Comment

7 + 3 =