Страница 1 из 3
Задачка по си++,очень интересная=)
Добавлено: 23 май 2008, 19:02
MaksSsimuS
Дано натуральное число n. Найти все меньшие n числа Мерсена. Простое число называется числом Мерсена, если оно может быть представлено в виде (2^p)-1 , где p – тоже простое число.
Буду очень признателен,если поможете или подскажете,как ее решать=)....

Re: Задачка по си++,очень интересная=)
Добавлено: 24 май 2008, 11:28
chnry
393877844
Могу за 500 руб продать прогу, которая проверяет, является ли число простым. Длина числа от 1 до 255 цифр.
Re: Задачка по си++,очень интересная=)
Добавлено: 24 май 2008, 11:28
chnry
Прога написана на языке Паскаль
Re: Задачка по си++,очень интересная=)
Добавлено: 24 май 2008, 22:04
un4-funeral
определить простое число или нет легко
прогоняем цикл от одного до n и смотрим делится ли n на это число без остатка
если без остатка, то наращиваем какую-то переменную
если после прохождения цикла она = 2, то число простое
а по задаче
заносишь в массив все числа простые от 1 до n (как определить простые я уже написал)
а потом по формуле твоей (2^p)-1 проверяешь каждый элемент массива к твоему n
chnry, щутник )))
Re: Задачка по си++,очень интересная=)
Добавлено: 25 май 2008, 12:56
Хыиуду
un4-funeral, да будет вам, все еще проще. Цикл достаточно проводить от 2 до корня из N. Вообще в разделе Алгоритмы это есть.
>>заносишь в массив все числа простые от 1 до n (как определить простые я уже написал) а потом по формуле твоей (2^p)-1 проверяешь каждый элемент массива к твоему n
Каждый - не надо. Как только 2^p-1 превысит N, цикл можно прерывать.
Re: Задачка по си++,очень интересная=)
Добавлено: 27 май 2008, 00:36
chur
Вообщем-то, практически определить является ли достаточно большое число простым, не такая, мягко скажем, простая задача

. Японские криптологи год раскладывали на множители 300-битное число (90 десятичных порядков). И это с использованием хрен знает каких машин и извращенных алгоритмов.
А тут все удовольствие за 500 руб. Улыбнул
А по задаче. Тупо составляешь заранее массив из простых чисел Мерсена (благо их совсем мало) и простым пробегом по массиву определяешь количество чисел меньше n. Всё.
.
Добавлено: 27 май 2008, 09:55
BBB
MaksSsimuS писал(а):Простое число называется числом Мерсена, если оно может быть представлено в виде (2^p)-1 , где p – тоже простое число.
Че-то мне смутно помнится, что если
p не является простым, то и
(2^p)-1 тоже не будет простым... Или противоположное утверждение верно: если
p - простое, то и
(2^p)-1 тоже простое. А, может, оба верны... Не помню уже.
Re: Задачка по си++,очень интересная=)
Добавлено: 27 май 2008, 11:29
Хыиуду
Второе явно неверно. 3 - простое, 2^3-1=8, не простое
Re: Задачка по си++,очень интересная=)
Добавлено: 27 май 2008, 12:21
Albor
Хыиуду писал(а):Второе явно неверно. 3 - простое, 2^3-1=8, не простое
Так вроде 7 получается.
Re: Задачка по си++,очень интересная=)
Добавлено: 27 май 2008, 17:32
MaksSsimuS
Да,так и получается,если мы берем простое число p,то у нас в результате будет тож простое.....но скажите,как определить число p простым.....по идее оно должно делиться только на себя и на 1.так получаеся,что надо определенное число брать и делить на все числа стоящие перед ним???чтобы определить простоту???или как проще?и как выделить памятьт под массив???подскажите=)