Вы должны решить этот ката без использования камня prime
. Если вы проведете первичный тест самостоятельно, вы поймете, почему тесты имеют смысл.
Тесты из этого Kata, по порядку:
Test.assert_equals(is_prime(1),false)
Test.assert_equals(is_prime(2),true)
Test.assert_equals(is_prime(5),true)
Test.assert_equals(is_prime(143),false)
Test.assert_equals(($primes.size-5).abs<3,true)
Test.assert_equals(is_prime(-1),false)
Test.assert_equals(is_prime(29),true)
Test.assert_equals(is_prime(53),true)
Test.assert_equals(is_prime(529),false)
Test.assert_equals(($primes.size-9).abs<3,true)
Тестирование 1, 2 и 5 может быть сделано без изменения памятки, но 143 - это первое число, где основной тест может включать добавление большего количества простых чисел к заметке. 143 = 11x13, поэтому абсолютно минимальная заметка будет включать только [2,3,5,7,11] на данный момент. Я считаю, что ката пытается убедиться, что вы не добавляете ненужные простые числа в заметку. По какой-то причине они добавили немного места для маневра, чтобы в памятке было два дополнительных простых числа, и оно все равно пройдет.
Следующие тесты немного более продвинуты. 29 прост, но опять же нам не нужно ничего добавлять к заметке, чтобы это обнаружить. По мере того, как мы go просматриваем памятку об известных простых числах, мы проверим, делится ли она на 2, 5, и ... мы на самом деле закончили. 5x5 = 25, что меньше 29, но 7x7 = 49, что на больше , чем 29. Это означает, что если бы 29 делилось на 7 или на большее простое число, оно также делилось бы на меньшее простое число, чем 7. Но мы уже проверили все простые числа, и это не делится . Следовательно, простое число 29.
Та же самая техника работает для 53, потому что у нас уже есть 11 в записке и 11x11> 53.
Последняя проверка для 529 аналогична предыдущей. 529 = 23x23, поэтому нам нужно получить до 23, что является 9-м простым числом.