Дано натуральное число n. Найти все меньшие n числа Мерсенна. (Простое число называется числом Мерсенна, если оно может быть представлено в виде 2^p-1, где р — тоже простое число. Например, 31 = 2^5 - 1 — число Мерсенна.)
спросил 18 Дек, 18 от cevka в категории школьный раздел


решение вопроса

+7
procedure isprime(n: longint; var ip: boolean);
var i, sqrtn: longint;
begin
  if (n >= 5) and ((n - 1) mod 6 = 0) or ((n + 1) mod 6 = 0)
    then begin
      i := 5;
      sqrtn := trunc(sqrt(n));
      ip := false;
      while i <= sqrtn do
        begin
          if n mod i = 0 then exit;
          inc(i, 2)
        end;
      ip := true
    end
    else ip := (n = 2) or (n = 3)
end;
 
var n, m: longint;
    mp: boolean;
 
begin
  m := 3;
  write('n = ');
  readln(n);
  if n <= m
    then writeln('Prime Mersenne numbers, smaller this number, don''t exist.')
    else begin
      writeln('Prime Mersenne numbers, there is less than this number:');
      while n > m do
        begin
          isprime(m, mp);
          if mp then writeln(m);
          m := m * 2 + 1
        end
    end;
  readln
end.
ответил 18 Дек, 18 от Olenka

Связанных вопросов не найдено

Обучайтесь и развивайтесь всесторонне вместе с нами, делитесь знаниями и накопленным опытом, расширяйте границы знаний и ваших умений.

Популярное на сайте:

Как быстро выучить стихотворение наизусть? Запоминание стихов является стандартным заданием во многих школах. 

Как научится читать по диагонали? Скорость чтения зависит от скорости восприятия каждого отдельного слова в тексте. 

Как быстро и эффективно исправить почерк?  Люди часто предполагают, что каллиграфия и почерк являются синонимами, но это не так.

Как научится говорить грамотно и правильно? Общение на хорошем, уверенном и естественном русском языке является достижимой целью.