Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. program finNumbersOfMercen;
  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. function check(n:longint;min:integer;IsCorrect:boolean):longint;
  21. begin
  22. Write('Введите n = ');
  23. repeat
  24. try
  25. Readln(n);
  26. if (n<= min) then
  27. begin
  28. WriteLn('Числа Мерсена, меньшие данного числа(n), не существуют.');
  29. IsCorrect := False
  30. end
  31. else
  32. begin
  33. WriteLn('Числа Мерсена,меньшие данного числа(n):');
  34. IsCorrect := True;
  35. end;
  36. except
  37. begin
  38. WriteLn('Это не число!');
  39. IsCorrect := False;
  40. end;
  41. end;
  42. until IsCorrect;
  43. result := n;
  44. end;
  45. var
  46. i, sqrtn: longint;
  47. n, m: longint;
  48. IsCorrect: boolean;
  49. begin
  50. IsCorrect := False;
  51. m := 3;
  52. WriteLn('Данная программа находит числа Мерсена,которые меньше числа n.');
  53. n:=check(n,3,IsCorrect);
  54. While (n > m) do
  55. begin
  56. IsPrime(m,IsCorrect);
  57. if (IsCorrect) then
  58. WriteLn(m);
  59. m := m * 2 + 1
  60. end;
  61. Readln;
  62. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement