Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. program NumbersOfMercen;
  2. uses
  3. System.SysUtils;
  4. procedure IsPrime(m: longint; var IsCorrect: boolean);
  5. var
  6. i, k: longint;
  7. begin
  8. IsCorrect := True;
  9. if (m > 3) then
  10. begin
  11. i := 3;
  12. k := round(sqrt(m));
  13. repeat
  14. if ((m mod i) = 0) then
  15. IsCorrect := False;
  16. inc(i);
  17. until (i > k-1) or (not IsCorrect)
  18. end;
  19. end;
  20. var
  21. i, sqrtn: longint;
  22. n, m: longint;
  23. IsCorrect: boolean;
  24. begin
  25. IsCorrect := False;
  26. m := 3;
  27. WriteLn('Данная программа находит числа Мерсена,которые меньше числа n.');
  28. repeat
  29. Write('Введите n = ');
  30. try
  31. Readln(n);
  32. if (n <= m) then
  33. begin
  34. WriteLn('Числа Мерсена, меньшие данного числа(n), не существуют.');
  35. IsCorrect := False
  36. end
  37. else
  38. begin
  39. WriteLn('Числа Мерсена,меньшие данного числа(n):');
  40. IsCorrect := True;
  41. end;
  42. except
  43. begin
  44. WriteLn('Это не число!');
  45. IsCorrect := False;
  46. end;
  47. end;
  48. until IsCorrect;
  49. While (n > m) do
  50. begin
  51. IsPrime(m,IsCorrect);
  52. if (IsCorrect) then
  53. WriteLn(m);
  54. m := m * 2 + 1
  55. end;
  56. Readln;
  57. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement