Задачка: Поиск наименьшего простого делителя

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *