Код Ревью
Сравни свои решения
#| BEGIN (Введите свое решение) |#
(define (search-for-primes start end port)
(define (transform n)
(if (= (remainder n 2) 0)
(+ n 1)
n))
(define (iter n m)
(timed-prime-test n port)
(if (< (+ n 2) m)
(iter (+ n 2) m)
#f))
(iter (transform start) end))
#| END |#
#| BEGIN (Введите свое решение) |#
(define (search-for-primes start end port)
(define (iter n)
(cond ((<= n end) (timed-prime-test n port) (iter (+ n 2)))))
(iter (if (= (remainder start 2) 0)
(+ start 1)
start)))
#| END |#
#| BEGIN (Введите свое решение) |#
(define (search-for-primes start end port)
(define (iter n)
(cond ((<= n end) (timed-prime-test n port) (iter (+ n 2)))))
(iter (if (= (remainder start 2) 0)
(+ start 1)
start)))
; Я хз, как с такой точностью давать ответ на вопросы задания
; (search-for-primes 1000 1020)
#|
1009 *** 0.
1013 *** 0.
1019 *** 0.
|#
; (search-for-primes 10000 10038)
#|
10007 *** 0.
10009 *** 0.
10037 *** 0.
|#
; (search-for-primes 100000 100044)
#|
100003 *** 1.0000000000000002e-2
100019 *** 0.
100043 *** 0.%
|#
; (search-for-primes 1000000 1000038)
#|
1000003 *** 0.
1000033 *** 0.
1000037 *** 0.
|#
#| END |#
#| BEGIN (Введите свое решение) |#
; Необходимые процедуры
; !Важное уточнение! В связи с низкой точностью возвращаемого результата у runtime в реализации LISP'а от MIT, для получения видимого результата будет повторение 1000 раз. Изменена процедура start-prime-test
; Измененная процедура
#|
(define (start-prime-test n start-time)
(define (loop i k)
(if (= i k)
(report-prime (- (runtime) start-time))
(begin
(prime? n)
(loop (+ i 1) k))))
(if (prime? n)
(loop 1 1000)
#f))
|#
; Решение
(define (search-for-primes start end port)
(define (iter n)
(cond ((<= n end) (timed-prime-test n port) (iter (+ n 2)))))
(iter (if (= (remainder start 2) 0)
(+ start 1)
start)))
; (search-for-primes 1000 1020)
#|
1009 *** .05
1013 *** .04999999999999999
1019 *** .05000000000000002
Среднее: 0.05
Возьмем среднее как основу для вычислений
|#
; (search-for-primes 10000 10038)
#|
10007 *** .17
10009 *** .16999999999999998
10037 *** .15000000000000002
Среднее: 0.16(3)
Ожидается: 0.05 * √10 = 0.1581...
Разница: 0.005219...
Вывод: Ожидаемое и полученное значения с хорошей точностью равны
|#
; (search-for-primes 100000 100044)
#|
100003 *** .5199999999999999
100019 *** .52
100043 *** .52
Среднее: 0.52
Ожидается: 0.163 * √10 = 0.5155...
Разница: 0.004549...
Вывод: *предыдущий вывод*
|#
; (search-for-primes 1000000 1000038)
#|
1000003 *** 1.5699999999999998
1000033 *** 1.5799999999999996
1000037 *** 1.5600000000000005
Среднее: 1.57
Ожидаемое: 0.52 * √10 = 1.6444...
Разница: 0.07438...
Вывод: разница более чем в 10 раз стала больше, чем в предыдущих вычислениях. Предположительно, если продолжить увеличивать значения для вычислений, можно будет заметить, что разница или погрешность становится все больше и больше.
|#
#|
Из проведенного исследования можно сделать вывод:
Время, которое затрачивается на выполнение
программы, не со 100%-ой точностью
пропорционально числу шагов в алгоритме. Время
будет меняться от запуска к запуску из-за
внешних факторов
|#
#| END |#
#| BEGIN (Введите свое решение) |#
(define (search-for-primes start end port)
(define (transform n)
(if (= (remainder n 2) 0)
(+ n 1)
n))
(define (iter n m)
(timed-prime-test n port)
(if (< (+ n 2) m)
(iter (+ n 2) m)
#f))
(iter (transform start) end))
#| END |#
#| BEGIN (Введите свое решение) |#
(define (search-for-primes start end port)
(define (iter n)
(cond ((<= n end) (timed-prime-test n port) (iter (+ n 2)))))
(iter (if (= (remainder start 2) 0)
(+ start 1)
start)))
#| END |#
#| BEGIN (Введите свое решение) |#
(define (search-for-primes start end port)
(define (iter n)
(cond ((<= n end) (timed-prime-test n port) (iter (+ n 2)))))
(iter (if (= (remainder start 2) 0)
(+ start 1)
start)))
; Я хз, как с такой точностью давать ответ на вопросы задания
; (search-for-primes 1000 1020)
#|
1009 *** 0.
1013 *** 0.
1019 *** 0.
|#
; (search-for-primes 10000 10038)
#|
10007 *** 0.
10009 *** 0.
10037 *** 0.
|#
; (search-for-primes 100000 100044)
#|
100003 *** 1.0000000000000002e-2
100019 *** 0.
100043 *** 0.%
|#
; (search-for-primes 1000000 1000038)
#|
1000003 *** 0.
1000033 *** 0.
1000037 *** 0.
|#
#| END |#
#| BEGIN (Введите свое решение) |#
; Необходимые процедуры
; !Важное уточнение! В связи с низкой точностью возвращаемого результата у runtime в реализации LISP'а от MIT, для получения видимого результата будет повторение 1000 раз. Изменена процедура start-prime-test
; Измененная процедура
#|
(define (start-prime-test n start-time)
(define (loop i k)
(if (= i k)
(report-prime (- (runtime) start-time))
(begin
(prime? n)
(loop (+ i 1) k))))
(if (prime? n)
(loop 1 1000)
#f))
|#
; Решение
(define (search-for-primes start end port)
(define (iter n)
(cond ((<= n end) (timed-prime-test n port) (iter (+ n 2)))))
(iter (if (= (remainder start 2) 0)
(+ start 1)
start)))
; (search-for-primes 1000 1020)
#|
1009 *** .05
1013 *** .04999999999999999
1019 *** .05000000000000002
Среднее: 0.05
Возьмем среднее как основу для вычислений
|#
; (search-for-primes 10000 10038)
#|
10007 *** .17
10009 *** .16999999999999998
10037 *** .15000000000000002
Среднее: 0.16(3)
Ожидается: 0.05 * √10 = 0.1581...
Разница: 0.005219...
Вывод: Ожидаемое и полученное значения с хорошей точностью равны
|#
; (search-for-primes 100000 100044)
#|
100003 *** .5199999999999999
100019 *** .52
100043 *** .52
Среднее: 0.52
Ожидается: 0.163 * √10 = 0.5155...
Разница: 0.004549...
Вывод: *предыдущий вывод*
|#
; (search-for-primes 1000000 1000038)
#|
1000003 *** 1.5699999999999998
1000033 *** 1.5799999999999996
1000037 *** 1.5600000000000005
Среднее: 1.57
Ожидаемое: 0.52 * √10 = 1.6444...
Разница: 0.07438...
Вывод: разница более чем в 10 раз стала больше, чем в предыдущих вычислениях. Предположительно, если продолжить увеличивать значения для вычислений, можно будет заметить, что разница или погрешность становится все больше и больше.
|#
#|
Из проведенного исследования можно сделать вывод:
Время, которое затрачивается на выполнение
программы, не со 100%-ой точностью
пропорционально числу шагов в алгоритме. Время
будет меняться от запуска к запуску из-за
внешних факторов
|#
#| END |#