Страница 1 из 1
Амбец!!!! Зачет все ближе, а задачи не решаются
Добавлено: 12 апр 2007, 11:34
Небо Принстона
Нас не оставляют в покое.
Вот еще одна задача.
все те же процедуры и функции.
Простое число называется числом Мерсенна, если оно может быть представлено в виде 2 р - 1, где p - тоже простое число. Дано натуральное число n. Найти все числа Мерсенна, меньшие n.
Либо вот такая задача:
Задано множество точек на плоскости, не лежащих на одной прямой. Найти минимальное подмножество точек, после удаления которых остаются точки, лежащие на одной прямой.
Ребята, на вас одна надежда.
Re: Амбец!!!! Зачет все ближе, а задачи не решаются
Добавлено: 12 апр 2007, 11:47
somewhere
Про Мерсена:
В разделе "Алгоритмы" есть алгоритм нахождения простых чисел в виде функции.
Перебрав в цикле до Н, проверить примерно так:
Код: Выделить всё
For x:=2 to n-1 do
If Prostoe(x) and Prostoe((x+1) div 2) then
Writeln('Число ',x,' - число Мерсена');
Re: Амбец!!!! Зачет все ближе, а задачи не решаются
Добавлено: 12 апр 2007, 12:50
Небо Принстона
Не очень улавливаю принцип работы функции про простые числа. может ее как то можно упростить???? и вообще мне она подходит??

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;
Re: Амбец!!!! Зачет все ближе, а задачи не решаются
Добавлено: 12 апр 2007, 13:46
somewhere
Функция 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
Re: Амбец!!!! Зачет все ближе, а задачи не решаются
Добавлено: 12 апр 2007, 17:08
Хыиуду
формула прямой - y=kx+b. Стало быть, прямая определяется двумя точками: (x1,y1) и (х2, у2). Вычисляем k=(y2-y1)/(x2-x1), b=y1-k*x1, потом для всех остальных точек проверяем: если хотя бы для одной i-й точки не выполняется y=k*x+b, значит, все точки не лежат на одной прямой