Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Коректив листинга

431
23 декабря 2006 года
sherry
207 / / 16.10.2006
Доброго всем времени суток!
Помогите, плз, в такой проблеме: у мя есть прога (смотри аттач), которая вычисляет сумму всех вводимых элементов, порядковые номера которых - простые числа. При этом все простые числа хранятся в массиве. Прога работает на "отлично", но нужно внести небольшой коректив, а именно: не хранить в процессе выполнения алгоритма простые числа. Как это сделать? подскажите пожалуйста.
622
23 декабря 2006 года
nilbog
507 / / 19.12.2006
можно фунцию ввести которая проверяет просто число или нет
 
Код:
function prost(num:integer):boolean;
label 1;
var i:integer;
begin
prost:=true;
for i:=2 to num div 2 do
 if num mod i = 0 then begin prost:=false; goto 1 end;
1:
end;
431
25 декабря 2006 года
sherry
207 / / 16.10.2006
Возможно, я тебя неправильно понял.. Во всяклм случае - алгоритм малость ругается..
622
25 декабря 2006 года
nilbog
507 / / 19.12.2006
вообще не нужны массивы!
1 считаю простым(не помню точно)
критерий конца посл-и 0
Код:
var i,j:word;
   a,sum,k: integer;
function prost(num:integer):boolean;
label 1;
var i:integer;
begin
prost:=true;
for i:=2 to num div 2 do
 if num mod i = 0 then begin prost:=false; goto 1 end;
1:
end;
begin
 k:=0; sum:=0;
  Repeat
   read(a);
   k:=k+1;
   if prost(k) then sum:=sum+a
  until a=0;

 writeln;
 writeln(sum);

end.
5.1K
02 января 2007 года
saturn61
108 / / 25.10.2006
А функцию prost мона оптимальней сделать, вот как...
Код:
function prost(num:integer):boolean;
var
i,k:integer;
begin
prost:=true;
k:=round(sqrt(a));
for i:=2 to k do
    if ( (a mod i)=0 ) and ( k<>1 ) then begin
       prost:=false;
       exit;
                                                     end;
end;
622
05 января 2007 года
nilbog
507 / / 19.12.2006
чтоб не спорили что лучше метки с for или while писать
вот вам функция определяющая на простое без меток и циклов вообще
))
 
Код:
function prost(n:integer):boolean;
var i:integer;
function pr(n,i:integer):boolean;
begin
 if i<=n div 2 then pr:=not (n mod i = 0) and pr(n,i+1)
                  else pr:=true
end;
begin i:=2;
prost:=pr(n,i)
end;

должно работать :)
431
05 января 2007 года
sherry
207 / / 16.10.2006
Спасибо, ребят! В благодарность - голос за каждого! ;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог