0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 8

Числа Мерсенна

01.09.2010, 23:00. Показов 9792. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день) Прошу помочь с задачей:
Написать программу для нахождения всех чисел Мерсенна от 1 до N. (Натуральное число а называется числом Мерсенна, если (2^а-1) простое число).
Вот мое видение задачи):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program mersen;
var n,c,a:Longint;
      k:integer;
 
function Step(x,y:real):real;
begin
 step:=Exp(y*ln(x));
end;
begin
writeln('Vvedite predelnoe chislo');
readln(n);
a:=random(1)-n;
k:=1;
while k<n do
begin
c:=step(k,2);
if (c-1) div a=1  then  writeln('k');
readln;
end;
end.
Но есть загвоздка и не знаю, как ее решить. Подскажите пожалуйста)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.09.2010, 23:00
Ответы с готовыми решениями:

Числа Мерсенна
Числа Мерсе́нна — числа вида M = 2^(n) - 1, где n — натуральное число. То есть например это числа: 1, 3, 7, 15, 31, 63, 127, 255, 511,...

Создать одномерный массив простых чисел Мерсенна
Здравствуйте! Помогите, пожалуйста, составить программу, уже месяц пытаюсь что-то придумать, все чушь получается... Простые числа...

Для каждого числа n выведите показатель n-го по порядку простого числа Мерсенна
(Если число 2n - 1 простое, то его называют числом Мерсенна.) В первой строке дано число m (1 &lt;= m &lt;= 100) — количество чисел. В...

6
 Аватар для voice8787
19 / 19 / 12
Регистрация: 21.08.2010
Сообщений: 136
01.09.2010, 23:55
вот мой вариант, только там какие-то проблемы с типом y[i]
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
program mersen;
type
mass=array[1..100] of longint;
var
y:mass;
k,i,j,n:longint;
begin
write('n=');
readln(n);
for i:=1 to n do
begin
y[i]:=exp(i*ln(2))-1;
k:=0;
for j:=1 to y[i] do
begin
if y[i] mod j=0 then
begin
k:=k+1;
end;
end;
if k=2 then
begin
write('i=');
writeln(i);
writeln('prostoe');
end
else
write('i=');
writeln(i);
writeln('sostavnoe');
end;
end.
1
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
02.09.2010, 09:14
Лучший ответ Сообщение было отмечено как решение

Решение

(Натуральное число а называется числом Мерсенна, если (2^а-1) простое число).
Не знаю где это вы вычитали, но это не так.
Посмотрите здесь.
http://ru.wikipedia.org/wiki/%... 0%BD%D0%B0
Если брать второй вариант, только для простых индексов, то можно написать так.
Максимально даже для типа extended точно можно вычислить только первые 17 чисел(n=60), 18-е число уже за счет округления выдает на 1 меньше(можете проверить увеличив const nmax).
Если нужен первый вариант чисел Мерсенна, то проверку на простое убрать.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{$N+}{подключим математический сопроцессор, если он не включен по умолчанию}
uses crt;
const nmax=60;
function Step2(n:byte):extended;{вычисляем 2^n}
var p:extended;
    i:byte;
begin
p:=1;
for i:=1 to n do
p:=p*2;
Step2:=p;
end;
function Prost(n:longint):boolean;{проверка индексов на простоту}
var i:longint;
begin
if n<2 then Prost:=false
else
 begin
  Prost:=true;
  for i:=2 to round(sqrt(n)) do
  if n mod i=0 then
   begin
    Prost:=false;
    break;
   end;
 end;
end;
 
var n,i:byte;
begin
clrscr;
repeat
write('Введите число до ',nmax,' n=');
readln(n);
until n in [1..nmax];
for i:=1 to n do
if Prost(i) then{если индекс простое число}
writeln(Step2(i)-1:0:0,' ');{выводим число Мерсенна}
readln
end.
4
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 8
02.09.2010, 19:56  [ТС]
Не знаю где это вы вычитали, но это не так.
Я это не вычитала) Так была поставлена моя задача преподавателем и напечатана так же, слово в слово.
Благодарю за решение)
0
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 8
06.09.2010, 22:27  [ТС]
А возможно ли решение этой задачи без брейка?
Так как за него обещали убивать)
0
 Аватар для voice8787
19 / 19 / 12
Регистрация: 21.08.2010
Сообщений: 136
07.09.2010, 01:05
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
program mersen;
uses crt;
var
k,i,j,a:integer;
m:longint;
begin
clrscr;
write('a=');
readln(a);
m:=1;
for i:=1 to a do
begin
m:=m*2;
end;
m:=m-1;
k:=0;
for j:=1 to m do
begin
if m mod j=0 then
begin
k:=k+1;
end;
end;
if k=2 then
begin
writeln('Prostoe');
end
else
begin
writeln('Sostavnoe');
end;
end.
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
07.09.2010, 06:32
Цитата Сообщение от Lbfyf Посмотреть сообщение
А возможно ли решение этой задачи без брейка?
Так как за него обещали убивать)
Это просто препод идиот, люди которые изобрели эту процедуру, наверное поумнее его были.
А вы, вместо того чтобы фырчать, сами бы учились писать элементарные программы.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function Prost(n:longint):boolean;{проверка индексов на простоту}
var i:longint;
    f:boolean;
begin
if n<2 then f:=false
else
 begin
  f:=true;
  i:=2;
  while f and(i<=sqrt(n)) do
   begin
    if n mod i=0 then f:=false
    else i:=i+1;
   end;
 end;
Prost:=f;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.09.2010, 06:32
Помогаю со студенческими работами здесь

Найти все меньшие n числа Мерсенна
Дано натуральное число n. Найти все меньшие n числа Мерсенна. (Простое число называется числом Мерсенна, если оно может быть представлено в...

Дано натуральное число n. Найти все числа меньшие Мр числа Мерсенна
Число Мерсенна – это простое число, представленное в виде Mp=2p–1, где p – тоже простое число.

Дано натуральное число n. Найти все числа меньшие Мр числа Мерсенна
Вот само задание и его нужно написать на Java. Дано натуральное число n. Найти все числа меньшие Мр числа Мерсенна. Число Мерсенна –...

Найти все числа меньшие Мр числа Мерсенна
Дано натуральное число n. Найти все числа меньшие Мр числа Мерсенна. Число Мерсенна – это простое число, представленное в виде Mp=2p–1, ...

Найти все числа, меньшие числа Мерсенна
Вот само задание и его нужно написать на Java.Прошу его написать на более понятном языке используя for и массивы. Дано натуральное число...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Согласованность транзакций в MongoDB
Codd 30.04.2025
MongoDB, начинавшая свой путь как классическая NoSQL система с акцентом на гибкость и масштабируемость, сильно спрогрессировала, включив в свой арсенал поддержку транзакционной согласованности. Это. . .
Продвинутый ввод-вывод в Java: NIO, NIO.2 и асинхронный I/O
Javaican 30.04.2025
Когда речь заходит о вводе-выводе в Java, классический пакет java. io долгие годы был единственным вариантом для разработчиков, но его ограничения становились всё очевиднее с ростом требований к. . .
Обнаружение объектов в реальном времени на Python с YOLO и OpenCV
AI_Generated 29.04.2025
Компьютерное зрение — одна из самых динамично развивающихся областей искусственного интеллекта. В нашем мире, где визуальная информация стала доминирующим способом коммуникации, способность машин. . .
Эффективные парсеры и токенизаторы строк на C#
UnmanagedCoder 29.04.2025
Обработка текстовых данных — частая задача в программировании, с которой сталкивается почти каждый разработчик. Парсеры и токенизаторы составляют основу множества современных приложений: от. . .
C++ в XXI веке - Эволюция языка и взгляд Бьярне Страуструпа
bytestream 29.04.2025
C++ существует уже более 45 лет с момента его первоначальной концепции. Как и было задумано, он эволюционировал, отвечая на новые вызовы, но многие разработчики продолжают использовать C++ так, будто. . .
Слабые указатели в Go: управление памятью и предотвращение утечек ресурсов
golander 29.04.2025
Управление памятью — один из краеугольных камней разработки высоконагруженных приложений. Го (Go) занимает уникальную нишу в этом вопросе, предоставляя разработчикам автоматическое управление памятью. . .
Разработка кастомных расширений для компилятора C++
NullReferenced 29.04.2025
Создание кастомных расширений для компиляторов C++ — инструмент оптимизации кода, внедрения новых языковых функций и автоматизации задач. Многие разработчики недооценивают гибкость современных. . .
Гайд по обработке исключений в C#
stackOverflow 29.04.2025
Разработка надёжного программного обеспечения невозможна без грамотной обработки исключительных ситуаций. Любая программа, независимо от её размера и сложности, может столкнуться с непредвиденными. . .
Создаем RESTful API с Laravel
Jason-Webb 28.04.2025
REST (Representational State Transfer) — это архитектурный стиль, который определяет набор принципов для создания веб-сервисов. Этот подход к построению API стал стандартом де-факто в современной. . .
Дженерики в C# - продвинутые техники
stackOverflow 28.04.2025
История дженериков началась с простой идеи — создать механизм для разработки типобезопасного кода без потери производительности. До их появления программисты использовали неуклюжие преобразования. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru