Страница 1 из 2
Святая простота (ЕЩЁ ОДИН КОНКУРС).
Добавлено: Ср, 22 сен 2004, 6:26
PSP
Будем записывать даты в формате "число, месяц, год". Например, сегодняшней дате будет соответствовать число 22092004.
Найдите две наиболее удалённые по времени друг от друга даты XXI века, между которыми нет ни одной даты, соответствующей простому числу.
Скажем, 3012001 и 7012001 - это простые числа, а все числа "между ними" (т.е. 4012001, 5012001, 6012001) - составные. Итак, автор задачи указал две даты, удалённые друг от друга на 4 дня. Кто больше?
Победитель будет поощрён!
Добавлено: Ср, 22 сен 2004, 14:49
-=[kaval]=-
мы тут прикинули с Владом, в принципе, между 12 декабря 2063 года и 3 января 2067 года 1118 дней "составных"... Кто больше? =)
Добавлено: Ср, 22 сен 2004, 19:29
PSP
-=[kaval]=- писал(а):мы тут прикинули с Владом, в принципе, между 12 декабря 2063 года и 3 января 2067 года 1118 дней "составных"... Кто больше? =)
Действительно, сами эти даты - "простые", а между ними все даты - "составные". Но их не 1118, а 1117.
Итак, принят результат 1117. Кто больше?
Добавлено: Ср, 22 сен 2004, 19:45
-=[kaval]=-
Код: Выделить всё
program maxprday;{$APPTYPE CONSOLE}
uses SysUtils;
const mes:array[0..1,1..12] of integer=((31,28,31,30,31,30,31,31,30,31,30,31),(31,29,31,30,31,30,31,31,30,31,30,31));
type TDate=record y,m,d:integer end;
function ispr(D:TDate):boolean;
var i,a:integer;
begin
a:=D.y+D.m*10000+D.d*1000000;
for i:=2 to round(sqrt(a)) do if (a mod i)=0 then begin ispr:=false;exit end;
ispr:=true;
end;
function isvis(a:integer):byte;
begin
if ((a mod 4)=0)and((a mod 100)<>0) then isvis:=1 else isvis:=0;
end;
procedure next(var Date:TDate);
begin with Date do begin
inc(d);
if d>mes[isvis(y),m] then begin d:=1;inc(m) end;
if m>12 then begin m:=1;inc(y) end;
end end;
var D,MD:TDate;c,mc:integer;
begin
D.y:=2000;D.m:=1;D.d:=1;mc:=0;
while not ispr(D) do next(D);
while true do
begin
MD:=D;next(D);c:=1;
while(not ispr(D))and(D.y<2100)do begin next(D);inc(c) end;
if D.y=2100 then break;
if c>mc then begin mc:=c;writeln('From ',MD.d,'.',MD.m,'.',MD.y,' to ',D.d,'.',D.m,'.',D.y,' - ',mc-1,' days') end;
end;
end.
признаюсь честно... никто больше не даст... ГДЕ ПРИЗЗЗ??????? =)))
Добавлено: Ср, 22 сен 2004, 20:36
PSP
Программа вместо доказательства?
А не эта ли программа дала неверный ответ 1118 ?
Да и вообще, как говаривал товарищ Саахов, "торопиться не надо!"
Добавлено: Чт, 23 сен 2004, 11:42
Гость
PSP писал(а):Программа вместо доказательства?
это не программа вместо доказательства, это программа, которая делает за вас полный перебор вариантов, который является доказательством.
PSP писал(а):А не эта ли программа дала неверный ответ 1118 ?

Нет, не эта.
PSP писал(а):Да и вообще, как говаривал товарищ Саахов, "торопиться не надо!"
Ладно, торопится не будем =)
Добавлено: Чт, 23 сен 2004, 20:21
PSP
Anonymous писал(а):PSP писал(а):Программа вместо доказательства?
это не программа вместо доказательства, это программа, которая делает за вас полный перебор вариантов, который является доказательством.
А в то, что он полный, видимо, надо просто верить. Программы полного перебора (как, впрочем, и математические доказательства с перебором) бывают ошибочными.
Добавлено: Чт, 23 сен 2004, 22:36
МЕНЯ
А может программка правда правильная...хотя даже если и так, какая разница...

Добавлено: Пт, 24 сен 2004, 9:16
PSP
МЕНЯ писал(а):А может программка правда правильная...хотя даже если и так, какая разница...

А я и не утверждал, что она неправильная. Впрочем, не заявлял и противного...
Добавлено: Пн, 27 сен 2004, 13:11
PSP
-=[kaval]=- писал(а):мы тут прикинули с Владом...
Похоже, никто не хочет (не может?) составить вам конкуренцию в решении этой задачи...
Добавлено: Ср, 29 сен 2004, 16:14
Влад
Добавлено: Ср, 29 сен 2004, 17:11
PSP
Уж очень этот вопрос подкупает своей первозданной новизной...
Подождём ещё немного. Может быть, кто-то что-то и напишет... "Торопиться не надо!"
Хорошо, будет Вам строгое доказательство =)
Добавлено: Ср, 06 окт 2004, 0:03
-=[kaval]=-
Разобьём весь промежуток времени с 1 января 2001 года по 31 декабря 2099 года на отрезки с концами в "простых" датах и длиной не более 1117 дней. Тогда очевидно, что отрезка длиной более 1117 дней, целиком забитого "составными" датами нет.
Первая простая дата - 3 Января 2001 года.
Между 3 Января 2001 года и 24 Декабря 2003 года 1084 дней.
Между 24 Декабря 2003 года и 15 Января 2007 года 1117 дней.
Между 15 Января 2007 года и 27 Декабря 2009 года 1076 дней.
Между 27 Декабря 2009 года и 15 Января 2013 года 1114 дней.
Между 15 Января 2013 года и 28 Декабря 2013 года 346 дней.
Между 28 Декабря 2013 года и 18 Января 2017 года 1116 дней.
Между 18 Января 2017 года и 21 Ноября 2019 года 1036 дней.
Между 21 Ноября 2019 года и 30 Декабря 2021 года 769 дней.
Между 30 Декабря 2021 года и 31 Декабря 2023 года 730 дней.
Между 31 Декабря 2023 года и 10 Января 2027 года 1105 дней.
Между 10 Января 2027 года и 25 Декабря 2029 года 1079 дней.
Между 25 Декабря 2029 года и 11 Января 2033 года 1112 дней.
Между 11 Января 2033 года и 29 Декабря 2033 года 351 день.
Между 29 Декабря 2033 года и 16 Января 2037 года 1113 дня.
Между 16 Января 2037 года и 26 Декабря 2039 года 1073 дня.
Между 26 Декабря 2039 года и 15 Января 2043 года 1115 дней.
Между 15 Января 2043 года и 25 Декабря 2043 года 343 дня.
Между 25 Декабря 2043 года и 5 Января 2047 года 1106 дней.
Между 5 Января 2047 года и 23 Декабря 2049 года 1082 дня.
Между 23 Декабря 2049 года и 12 Января 2053 года 1115 дней.
Между 12 Января 2053 года и 22 Декабря 2053 года 343 дня.
Между 22 Декабря 2053 года и 8 Января 2057 года 1112 дней.
Между 8 Января 2057 года и 18 Декабря 2059 года 1073 дня.
Между 18 Декабря 2059 года и 7 Января 2063 года 1115 дней.
Между 7 Января 2063 года и 12 Декабря 2063 года 338 дней.
Между 12 Декабря 2063 года и 3 Января 2067 года 1117 дней.
Между 3 Января 2067 года и 21 Декабря 2069 года 1082 дня.
Между 21 Декабря 2069 года и 12 Января 2073 года 1117 дней.
Между 12 Января 2073 года и 31 Декабря 2073 года 352 дня.
Между 31 Декабря 2073 года и 21 Января 2077 года 1116 дней.
Между 21 Января 2077 года и 28 Декабря 2079 года 1070 дней.
Между 28 Декабря 2079 года и 18 Января 2083 года 1116 дней.
Между 18 Января 2083 года и 30 Декабря 2083 года 345 дней.
Между 30 Декабря 2083 года и 19 Января 2087 года 1115 дней.
Между 19 Января 2087 года и 31 Декабря 2089 года 1076 дней.
Между 31 Декабря 2089 года и 19 Января 2093 года 1114 дня.
Между 19 Января 2093 года и 30 Декабря 2093 года 344 дня.
Между 30 Декабря 2093 года и 18 Января 2097 года 1114 дня.
Между 18 Января 2097 года и 29 Декабря 2099 года 1074 дня.
29 Декабря 2099 года - последняя простая дата. Всё. Что и треб. =)
Re: Хорошо, будет Вам строгое доказательство =)
Добавлено: Ср, 06 окт 2004, 6:45
PSP
-=[kaval]=- писал(а):Разобьём весь промежуток времени с 1 января 2001 года по 31 декабря 2099 года на отрезки...
Но 2100-й год тоже относится к XXI веку.

Re: Хорошо, будет Вам строгое доказательство =)
Добавлено: Ср, 06 окт 2004, 13:40
Гость
PSP писал(а):Но 2100-й год тоже относится к XXI веку.

ну ладно, всё равно с последней простой даты не успеет набраться 1117 дней - там всего год, а в году меньше чем 370 дней.