Помощь - Поиск - Пользователи - Календарь
Полная версия: Простая задача
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-Александр-
хотел написать программу для подсчета совершенных чисел от 1 до 10 000

вот ее код, но что-то там не работает

program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var mersen:real;
var p:integer;
var sover:real;
var sum_sover:real;

var n:real;
begin
sum_sover:=0;

sover:=0;
for p:=1 to 10000 do
begin
n:=p;
mersen:=(exp(n)*ln(2.0))-1.0;

//-1;
//делаем проверку на простоту числа мерсена
if ((mersen/2)*2<>mersen)then

if ((mersen/5)*5<>mersen)then
if ((mersen/7)*7<>mersen)then

if ((mersen/9)*9<>mersen)then


if ((mersen/23)*23<>mersen)then

if ((mersen/341)*341<>mersen)then

sover:=(exp(p-1)*ln(2.0))*mersen;


if sover>10000 then
begin
sum_sover:=sum_sover+sover;
end
else
sum_sover:=sum_sover-1;

end;
// writeln('Symma chicel ravna', sum_sover);

readln;


end.

на паскале не прогал давно ....хотелось бы получить помощь
volvo
blink.gif Это ты число Мерсена так находишь:

Цитата
mersen:=(exp(n)*ln(2.0))-1.0;
? Все проще гораздо:

var
mersen: longint;
...
mersen := pred(1 shl n);



(да и вообще, зачем проверять то, что задано по определению? Числа Мерсена - это как раз простые числа)

А программа по поиску совершенных чисел лежит в FAQ-е...
-Александр-
а ссылочку не дашь
volvo
FAQ: Замечательные числа
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.