Напишите функцию smallest_prime_divisor()
, которая принимает на вход положительное целое число n
и возвращает наименьший простой делитель этого числа (кроме 1). Если n само является простым числом, функция должна вернуть само n
.
Напишите также тесты с использованием pytest
, чтобы проверить правильность работы функции на разных входных данных.
Пишите ваши варианты в комментариях.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
# smallest_prime_divisor.py def smallest_prime_divisor(n): if n == 2: return 2 for divisor in range(2, int(n ** 0.5) + 1): if n % divisor == 0: return divisor return n # test_smallest_prime_divisor.py import pytest from smallest_prime_divisor import smallest_prime_divisor def test_prime_numbers(): assert smallest_prime_divisor(2) == 2 assert smallest_prime_divisor(3) == 3 assert smallest_prime_divisor(17) == 17 assert smallest_prime_divisor(19) == 19 def test_composite_numbers(): assert smallest_prime_divisor(4) == 2 assert smallest_prime_divisor(9) == 3 assert smallest_prime_divisor(25) == 5 assert smallest_prime_divisor(35) == 5 def test_large_number(): assert smallest_prime_divisor(1000000007) == 1000000007 def test_smallest_prime_divisor_of_1(): assert smallest_prime_divisor(1) == 1
В данной задаче функция smallest_prime_divisor(
) принимает на вход целое число и методом перебора находит минимальный делитель. Тесты проверяют правильность работы функции для различных входных данных.