|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.01.2009, 17:59 | #11 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
нене - на самом деле )))) все юзается через формулу, но я так понял вы хотите через цикл или как? ))
|
02.01.2009, 18:03 | #12 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
на самом деле все делается через формулу суммы арифметической прогрессии, так как Sn=(a1+An)*n/2, но я так понял надо через цикл, который с очень большими числами будет очень долго выполняться ( к примеру n=10^10 выполняется больше 10 минут )))) - в формуле a1=1 , An = n ( заданное число ), и n - заданное число и все - могу написать прогу - это вообще как делать нех, только бы extended поддержал ))
|
02.01.2009, 18:22 | #13 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
Код:
|
02.01.2009, 21:30 | #14 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Код:
|
|
03.01.2009, 21:00 | #15 |
Регистрация: 02.01.2009
Сообщений: 6
|
мне вот тут подсказали про вторую!
{$I-,Q-,R-,S-,D-,L-}
{$I+,Q+,R+,S+,D+,L+} program Solution; const inf = 'prime.in'; ouf = 'prime.out'; maxn = 10002; type int = longint; var p : array [0..maxn] of int; n, k, res, i, j : int; function isprime(a : int) : boolean; var i : int; begin i := 1; while(i <= k)and(p[i] * p[i] <= a)do begin if a mod p[i] = 0 then begin isprime := false; exit end; inc(i) end; isprime := true end; begin assign(input, inf); reset(input); read(n); close(input); p[1] := 2; p[2] := 3; k := 2; i := 1; while(i * 6 - 1 <= n)do begin if isprime(i * 6 - 1) then begin inc(k); p[k] := i * 6 - 1 end; if(i * 6 + 1 <= n)and(isprime(i * 6 + 1))then begin inc(k); p[k] := i * 6 + 1 end; inc(i) end; for i := 1 to k - 1 do if p[i] + 2 = p[i + 1] then inc(res); assign(output, ouf); rewrite(output); writeln(res); { for i := 1 to k - 1 do if p[i] + 2 = p[i + 1] then writeln(2, ' ', p[i]);} close(output) |
04.01.2009, 00:05 | #16 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Давид,
1) а чем Вам мой вариант не подошёл? :-) 2) в приведённой Вами программе вторая строчка с директивами компилятора ПОЛНОСТЬЮ перекрывает первую - поэтому первую можно смело удалить! 3) Решение очень остроумное! А сумеете это решение защитить?! вот этот ключевой цикл: Код:
Вы знаете, почему это делается так? Преподователю сумеете объяснить? ;-) впрочем. это дело хозяйское. Главное, что задача решена. Кстати, спасибо, что отписались в теме и привели решение. Мне понравилось.... |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите решить 2 задачи | Pashtet | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 06.11.2008 04:18 |
Помогите решить задачи. (С++) | Memfis_nya | Помощь студентам | 6 | 04.11.2008 17:44 |
Помогите решить задачи в C++ | marsius | Помощь студентам | 4 | 18.04.2008 23:33 |
Помогите решить задачи | Andyst | Помощь студентам | 3 | 25.12.2007 15:14 |
Помогите решить задачи! | Вилен | Помощь студентам | 2 | 10.10.2007 23:12 |