Справка понимая реализацию Решета Эратосфена

То, что вы хотите, выглядит странно для меня :). Тем не менее, я бы сделал следующее:

  1. Реализовать HttpResponseWrapper, чтобы обернуть любое другое HttpResponse таким образом:

    public class HttpResponseWrapper implements HttpResponse {
        private String errorMessage;
    ...
    
        @Override
        public void sendError(...) {
            <save error message here>
        }
    ...
    }
    
  2. Создайте фильтр и оберните любой ответ в этом

  3. Установите фильтр для всех запросов и сначала в цепочке

  4. На странице ошибок проверьте, ответ является instanceof HttpResponseWrapper

  5. Получить ваше сообщение

5
задан harto 21 October 2009 в 03:23
поделиться

2 ответа

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 :)

4
ответ дан 14 December 2019 в 08:54
поделиться

Дэвид Зайлер: возможно, не самый ясный, но помимо реализации базового Sieve он также должен реализовать три оптимизации, описанные в упражнении.

Харто: это было мое второе упражнение. Я все еще экспериментировал со своим стилем письма.

Ephemient: правильный.

См. Более полное объяснение в моем комментарии на Programming Praxis .

EDIT : Я добавил дополнительный комментарий в Programming Praxis. И когда я действительно посмотрел на код, я ошибся в выводе числа 6 в формуле; извините, что ввела вас в заблуждение.

3
ответ дан 14 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: