# Solving and testing 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  # и второй случай
```

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

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

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

[убеждаемся](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/11/event-877426.pdf) · [сначала](https://dev.to/devnote2319/logging-pipeline-runs-without-noise-dmof8-55dc) · [глазами](https://dev.to/devnote2319/idempotent-publishing-jobs-9r51p-7mk) · [Задача](https://news-ctl-posts.hashnode.dev/exploring-the-sieve-of-eratosthenes-mw4vi8t0) · [простым](https://dev.to/devnote2319/idempotent-publishing-jobs-6mcdb-10oo) · [Хорошая](https://pastelink.net/6thmdu8t) · [делитель](https://gal17261.carrd.co/) · [примерах](https://milhench.com/wp-content/uploads/event-manager-uploads/event_banner/2026/11/kbjtv-cc1769.pdf) · [вызова](https://posts.workshop-hub.workers.dev/average-oshibki-2) · [Достаточно](https://workshoptests372558.vuodatus.net/lue/2026/11/9) · [памяти](https://dev.to/devnote2319/idempotent-publishing-jobs-oxu5p-1763) · [находит](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/reverse-string-oshibki-mwabmf8q.md) · [работы](https://jaflysilve.freeflarum.com/d/21275-21275-myvonnieta-porn) · [затем](https://www.imagefap.com/pictures/14229610/i-man-olgun-twitter-f-a-videolar-amat-ouml-r-t-uuml-rk-olgu) · [Такой](https://rentry.org/gallery-391916) · [любой](https://paper.wf/almafischer86log/mu-zi-luan-lun-lun-tan) · [работает](https://statics.pancake.vn/web-media-264/53/62/cc/ad/b3db3efd59eb33e7093a21a8d52e24dc88c8379c95d6e909a3fb80cf.pdf) · [range(2](https://sofiafournier974.overblog.fr/2026/11/german-teen-anne-strip-amateur-solo-stripping-session.html) · [гарантированно](https://posts.workshop-hub.workers.dev/caesar-dva-sposoba-2) · [проверок](https://dev.to/devnote2319/idempotent-publishing-jobs-84uy2-3em1) · [Сложность](https://edu-notes-pages.pages.dev/min-max-dva-sposoba/) · [корректности](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/bubble-sort-oshibki-mwabikbi.md) · [становится](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/11/desi-bath-hidden-camera-c2fbea.pdf) · [минимум](https://radicle.network/nodes/seed.cielago.xyz/rad%3AzaYrXGT2butVtuvxGZPxsWnGHDSg/issues/41798c8b0807bed8784715c7cd78b0b3dab721e9) · [Поэтому](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/average-tests-mwadm1ns.md) · [проверять](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/11/desi-aunty-peeing-5ea967.pdf) · [корня](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-bb4an-4op6) · [квадратного](https://dev.to/devnote2319/scheduling-retries-in-a-publishing-pipeline-uv670-4cbn)

