Vanilla_Fury

zakaz_20_02_2021

Feb 20th, 2021
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.85 KB | None | 0 0
  1. Program zakaz_20_02_2021;
  2.  
  3. uses
  4.     SysUtils, Math;
  5.  
  6. {$APPTYPE CONSOLE}
  7.  
  8. Var
  9.     n, p, r, c, i: Int64;
  10.     IsPrime, IsNotPrime: Boolean;
  11.     // n - натуральное число, p - степень, простое число, r - число Мерсена
  12.     // i - позиция натурального числа
  13.  
  14. Begin
  15.     Write('Vvedite n: ');
  16.     readln(n);
  17.     if (n = 2) or (n = 3) then
  18.         Writeln('Net takih chisel')
  19.     else if n = 1 then
  20.         Writeln('Dannoe chislo ne yavlyaetsya neobhodimim dlya resheniya')
  21.     else if n < 1 then
  22.         Writeln('Ne naturalnoe chislo ')
  23.     else
  24.     begin
  25.         p := 2;
  26.         r := 0;
  27.         c := 0;
  28.         While ((r < n) and (p <= n)) do
  29.         begin
  30.             IsNotPrime := False;
  31.             For i := 2 to p - 1 do
  32.                 if p mod i = 0 then
  33.                     IsNotPrime := True;
  34.             if (not IsNotPrime) and (p > 1) then
  35.                 IsPrime := true
  36.             else
  37.                 IsPrime := false;
  38.             if IsPrime then
  39.             begin
  40.                 r := Round(power(2, p) - 1);
  41.  
  42.                 IsNotPrime := False;
  43.                 For i := 2 to r - 1 do
  44.                     if r mod i = 0 then
  45.                         IsNotPrime := True;
  46.                 if (not IsNotPrime) and (r > 1) then
  47.                     IsPrime := true
  48.                 else
  49.                     IsPrime := false;
  50.  
  51.                 if (r < n) and IsPrime then
  52.                 begin
  53.                     Write(r, ' '); // Проверка на простое число Мерсена
  54.                     c := c + 1; // счётчик кол-ва чисел Мерсена
  55.                 end;
  56.             end;
  57.             p := p + 1;
  58.         end;
  59.         Writeln;
  60.         Writeln('Takih chisel = ', c);
  61.     end;
  62.     Writeln('konets');
  63.     readln;
  64.  
  65. end.
Advertisement
Add Comment
Please, Sign In to add comment