Понедельник, 25 Ноября 2024, 18:02

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите решить задачу по программированию, пожалуйста
devil-hunterДата: Понедельник, 24 Октября 2011, 22:49 | Сообщение # 1
был не раз
Сейчас нет на сайте
Простым называют число, которое имеет только 2 делителя - 1 и само себя. Среди простых чисел только самое маленькое число 2 - чётное. Возьмём возрастающёю последовательность состоящую из нечётных простых чисел 3,5,7,11,13,17,19,23,...
и будем получать средние арифметические чисел стоящих в ней рядом. В результате получим последовательность 4, 6 , 9, 12, 15, 18, 21, 26, 30 ...
нужно вывести значение N-го члена последовательности, состоящей из средних арифметических

помогите её решить, плиз!!!
я код написал, НО он пишет "несоответствие типов"
приведите пожалуйста правильное решение,буду премного благодарен


Сообщение отредактировал devil-hunter - Понедельник, 24 Октября 2011, 22:53
anton-garДата: Понедельник, 24 Октября 2011, 23:22 | Сообщение # 2
WEBmaster
Сейчас нет на сайте
Code
var c,i,j,l:integer;
begin
  cls;
   for i:=3 to 999 do
   begin
    j:=2;
    l:=round(sqrt(i));
    while (i mod j <> 0) and (j <= l) do
                    begin
                    inc(j);
                    end;
     if (j > l) then
                    begin
                     write((c+i)/2,' ');
                     c:=i;
                    end;
   end;
end.


Уже позднова-то, поэтому, возможно, более рентабельный способ в голову не пришёл.
Всё работает, если что писал в ABC.




Сообщение отредактировал anton-gar - Вторник, 25 Октября 2011, 00:34
devil-hunterДата: Понедельник, 24 Октября 2011, 23:42 | Сообщение # 3
был не раз
Сейчас нет на сайте
у меня пишет "несоответствие типов" (((
anton-garДата: Понедельник, 24 Октября 2011, 23:51 | Сообщение # 4
WEBmaster
Сейчас нет на сайте
В какой программе компилируете?

devil-hunterДата: Понедельник, 24 Октября 2011, 23:59 | Сообщение # 5
был не раз
Сейчас нет на сайте
dos box(ну это эмулятор доса)
tp 7.1
вроде так....
anton-garДата: Вторник, 25 Октября 2011, 00:35 | Сообщение # 6
WEBmaster
Сейчас нет на сайте
А проверте, вот это:
Code
var i,j,lim : word;

begin  
  cls;
   for i:=1 to 999 do
   begin
    j:=2;
    lim:=round(sqrt(i));
    while (i mod j <> 0) and (j <= lim) do inc( j );
    if (j > lim) then write( i,' ' );
   end;
end.




Сообщение отредактировал anton-gar - Вторник, 25 Октября 2011, 00:36
devil-hunterДата: Вторник, 25 Октября 2011, 01:07 | Сообщение # 7
был не раз
Сейчас нет на сайте
этот работает, но в этой задаче в начале надо найти последовательность(массив) из простых чисел, потом найти массив из средние арифметических чисел, стоящих рядом, а уже потом находить значение н-го члена данной последовательности.
простые числа 3,5,7,11,13,17,19,23,...
средние арифметические 4,6,9,12,15,18,21,...
и надо получить к примеру значение н-го 20 элемента.
ну третий пункт элементарный)))
а вот с делением элементов массива на 2, какой-то косяк выходит. пишет "несоответствие типа"
anton-garДата: Вторник, 25 Октября 2011, 18:36 | Сообщение # 8
WEBmaster
Сейчас нет на сайте
Quote (anton-gar)
var i,j,lim : word;

begin
cls;
for i:=1 to 999 do
begin
j:=2;
lim:=round(sqrt(i));
while (i mod j <> 0) and (j <= lim) do inc( j );
if (j > lim) then write( i,' ' );
end;
end.


Добавьте в верхний экземпляр, по принципу 1 моей задачи, которая ниже...

Quote (anton-gar)
var c,i,j,l:integer;
begin
cls;
for i:=3 to 999 do
begin
j:=2;
l:=round(sqrt(i));
while (i mod j <> 0) and (j <= l) do
begin
inc(j);
end;
if (j > l) then
begin
write((c+i)/2,' ');
c:=i;
end;
end;
end.

Добавлено (25.10.2011, 18:34)
---------------------------------------------
Цитаты кода, конечно, становятся нечитабельными...

Добавлено (25.10.2011, 18:36)
---------------------------------------------
А не работает у вас моя программа, так как у меня другая версия паскаля, отсюда и несоответствие типов.


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг