# Writing tests for primality testing

Решение без тестов быстро ломается, поэтому добавим к задаче простые проверки.

## Задача

Определить, является ли число `n` простым. Достаточно проверять делители до квадратного корня из `n`.

## Решение

```python
def is_prime(n: int) -> bool:
    if n < 2:
        return False
    for d in range(2, int(n ** 0.5) + 1):
        if n % d == 0:
            return False
    return True


print(is_prime(29))
```

## Как это работает

Если у числа есть делитель, больший корня, то у него есть и парный меньший. Поэтому перебор до `√n` гарантированно находит любой составной делитель.

## Пример работы

```text
True
```

## Сложность

O(√n) по времени, O(1) по памяти.


## Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.

```python
assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай
```

Такой минимум уже защищает от случайной ошибки при правках кода.

Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.

**Читайте также:**

[тестов](https://ecency.com/@lukassvobod8179/polo-ky-d-tsk-ho-registru-mus-m-t-co-byste-m-li-v-d-t-42c2d6) · [учебных](https://kappa.lol/xF3bEj) · [случаи](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [числа](https://elenamorar1.wixsite.com/my-site-1/post/burcu-%C3%B6zberk-pornosu--t%C3%BCrk-%C3%BCnl%C3%BC-seks-ve-if%C5%9Fa-videolar%C4%B1) · [проверка](https://blogfreely.net/nataliarussell2/u-mamy-vypala-grud) · [примерах](https://leahfournier806.overblog.fr/2026/10/lust-hunter-boruto.html) · [число](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-0e248f.pdf) · [проверки](https://privatebin.devol.it/?c42985569c3d820e#Gna9UzCkd7wgMPK5H7rpAQH6tyCnUFeZmrqLUhsZbMyP) · [поэтому](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [времени](https://ecency.com/@martinnemec5998/sophie-rain-leaked-onlyfans-exclusive-nudes-and-videos-e1f34c) · [короткие](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/rwt-4184-797217.pdf) · [правках](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bigcatmia-vidos-09f72a.pdf) · [перебор](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [задач](https://barbosadaria50.wixsite.com/my-site-1/post/%D1%82%D0%BE%D0%B2-%D1%82%D0%B5%D0%BD%D0%B4%D0%B5%D1%80-%D1%84%D0%B0%D0%B2%D0%BE%D1%80%D0%B8%D1%82--%D1%8D%D0%BA%D1%81%D0%BA%D0%BB%D1%8E%D0%B7%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F-%D1%84%D0%BE%D1%82%D0%BE%D1%81%D0%B5%D1%81%D1%81%D0%B8%D1%8F--%D0%B3%D0%B0%D0%BB%D0%B5%D1%80%D0%B5%D1%8F) · [ошибки](https://wuchu-pub.com/uploads/20261015/98b1cae6b6e202e8b40713bc48e3cef9.pdf) · [Решение](https://sway.cloud.microsoft/j6QNVpwSaXEqEQev) · [любой](https://hey.xyz/posts/29e44r9gr3k9d5zff8f) · [базовая](https://gal29037.carrd.co/) · [составной](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/tayroseex-a502ed.pdf) · [включая](https://ecency.com/@karelnovotn6538/post-079984) · [python](https://annafournier754.overblog.fr/2026/10/post-4.html)

