То, что вы хотите, выглядит странно для меня :). Тем не менее, я бы сделал следующее:
Реализовать HttpResponseWrapper
, чтобы обернуть любое другое HttpResponse
таким образом:
public class HttpResponseWrapper implements HttpResponse {
private String errorMessage;
...
@Override
public void sendError(...) {
<save error message here>
}
...
}
Создайте фильтр и оберните любой ответ в этом
Установите фильтр для всех запросов и сначала в цепочке
На странице ошибок проверьте, ответ является instanceof HttpResponseWrapper
Получить ваше сообщение
I think I've figured it out, with the assistance of programmingpraxis' comments on their website.
To restate the problem, startj
is defined in the listing as (+ (* 2 i i) (* 6 i) 3)
, i.e. 2i^2 + 6i + 3
.
I didn't initially understand how this expression related to p
- since 'sifting' for a number p
should start at p^2
, I figured that startj
should be something relating to 4i^2 + 12i + 9
.
However, startj
is an index into the vector v
, which contains odd numbers starting from 3. Therefore, the index for p^2
is actually (p^2 - 3) / 2
.
Expanding the equation: (p^2 - 3) / 2
= ([4i^2 + 12i + 9] - 3) / 2
= 2i^2 + 6i + 3
- which is the value of startj
.
I feel it might've been clearer to define startj
as (quotient (- (* p p) 3) 2)
, but anyway - I think that solves it :)
Дэвид Зайлер: возможно, не самый ясный, но помимо реализации базового Sieve он также должен реализовать три оптимизации, описанные в упражнении.
Харто: это было мое второе упражнение. Я все еще экспериментировал со своим стилем письма.
Ephemient: правильный.
См. Более полное объяснение в моем комментарии на Programming Praxis .
EDIT : Я добавил дополнительный комментарий в Programming Praxis. И когда я действительно посмотрел на код, я ошибся в выводе числа 6 в формуле; извините, что ввела вас в заблуждение.