Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

в паскаль. посмотрите пожалуйста

Марина Иванова Ученик (187), на голосовании 7 лет назад
Дано натуральное число n. Найти все меньшие n числа Мерсена. (Простое число называется числом Мерсена, если оно может быть представлено в виде, где p – тоже простое число. Определить функцию, распознающую простые числа в виде: primer (a)={1,0

uses crt;
const a:array[1..11] of longint=(3,5,7,9,11,13,17,19,23,29,31);
var st: set of byte; f:boolean;
l,j,i,n,m,p: byte;
begin
clrscr;
randomize;
writeln('Введите размер множества');
readln(m);
for i:=1 to m do st:=st+[random(255)];
writeln('Вывод множества');
for i:=0 to 255 do if i in st then writeln(i);
writeln('Введите n');
readln(n);
writeln('введите простое число p');
readln(p);
for j:=1 to 11 do
if p=a[j] then p:=a[j] else writeln('Вы ввели не простое число');
for i:=0 to 255 do
if (i in st) and (i<n) and (i=exp(ln(2)*p)-1)
then writeln(i);
readln;
end.
Голосование за лучший ответ
Globe Просветленный (24852) 7 лет назад
да их там, судя по вики, всего 47 штук. загнать в массив и выводить нужную его часть.
PandacrashМудрец (13287) 7 лет назад
Это где это?
"Неизвестно, конечно или бесконечно множество простых чисел Мерсенна "
Globe Просветленный (24852) Ну, я имел в виду известных. Последнее вроде больше 10 млн. десятичных цифр. Препод замается вводить для него n с клавиатуры.
Pandacrash Мудрец (13287) 7 лет назад
Смотри какая красота:

var i,n:integer;

function fLog(a,b:real):real;
begin
fLog:=ln(a)/ln(b);
end;

function isInteger(n:real):boolean;
begin
result := frac(n)=0;
end;

function primer(a:integer):byte;
begin
if isInteger(fLog(a+1,2)) then result := 1 else result := 0;
end;

begin
write('n=');readln(n);
for i := 1 to n do if primer(i)=1 then write(i,' ');
end.
Источник: lol
Похожие вопросы