Напишите функцию 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() принимает на вход целое число и методом перебора находит минимальный делитель. Тесты проверяют правильность работы функции для различных входных данных.