Амбец!!!! Зачет все ближе, а задачи не решаются

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Небо Принстона
Сообщения: 6
Зарегистрирован: 23 мар 2007, 12:24

Нас не оставляют в покое.
Вот еще одна задача.
все те же процедуры и функции.
Простое число называется числом Мерсенна, если оно может быть представлено в виде 2 р - 1, где p - тоже простое число. Дано натуральное число n. Найти все числа Мерсенна, меньшие n.
Либо вот такая задача:
Задано множество точек на плоскости, не лежащих на одной прямой. Найти минимальное подмножество точек, после удаления которых остаются точки, лежащие на одной прямой.
Ребята, на вас одна надежда.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Про Мерсена:

В разделе "Алгоритмы" есть алгоритм нахождения простых чисел в виде функции.
Перебрав в цикле до Н, проверить примерно так:

Код: Выделить всё

For x:=2 to n-1 do
    If Prostoe(x) and Prostoe((x+1) div 2) then
          Writeln('Число ',x,' - число Мерсена');
It's a long way to the top if you wanna rock'n'roll
Небо Принстона
Сообщения: 6
Зарегистрирован: 23 мар 2007, 12:24

Не очень улавливаю принцип работы функции про простые числа. может ее как то можно упростить???? и вообще мне она подходит??
:confused:
function issimple:boolean;
var i:longint;
begin
for i:=2 to x div 2 do
if x mod i=0 then begin
issimple:=false;exit; end;
issimple:=true;
end;
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Функция IsSimple(x) - возвращает TRUE - если Х - простое, и FALSE если нет. Перебирает все числа до Х/2, проверяя делиться ли нацело (остаток от деления=0) число Х на перебираемые. Если не делиться ни на какие - значит простое.
Поскольку простое_число_Менсена = простое_число*2 - 1, то без функции проверки на простые числа (IsSimple) не обойтись. Так как необходимо найти все числа Менсена до N, то выполняем перебор всех чисел (Х) до N - они должны удовлетворять условиям
Х = Число Менсена.
1. Х < N, X - натур. - т.е. целое, больше 0
2. Х - простое (IsSimple(x) = True)
3. Целое число (х+1)/2 - простое. Число Менсена (Х) = А*2-1, отсюда А = (Х+1)/2
It's a long way to the top if you wanna rock'n'roll
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

формула прямой - y=kx+b. Стало быть, прямая определяется двумя точками: (x1,y1) и (х2, у2). Вычисляем k=(y2-y1)/(x2-x1), b=y1-k*x1, потом для всех остальных точек проверяем: если хотя бы для одной i-й точки не выполняется y=k*x+b, значит, все точки не лежат на одной прямой
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить