Взаимно простые числа — это пара (или набор) чисел, у которых нет общих делителей кроме 1. Например, 8 и 15 взаимно просты, так как их наибольший общий делитель (НОД) равен 1, а вот 12 и 18 — нет (НОД = 6). В ручном режиме проверять такие числа просто, но что делать, если у вас список из сотен значений в Excel? Автоматизация этой задачи сэкономит часы работы.
В этой статье мы разберём 5 способов определения взаимно простых чисел в Excel — от базовых формул до продвинутых скриптов на VBA. Вы узнаете, как:
- 🔹 Использовать функцию
НОДдля парных и массовых проверок - 🔹 Применять формулы массива для анализа диапазонов
- 🔹 Автоматизировать процесс с помощью Power Query и VBA
- 🔹 Визуализировать результаты с условным форматированием
- 🔹 Избегать типичных ошибок при работе с большими числами
Методы подойдут для Excel 2010–2023 и Microsoft 365, а также для Google Sheets (с поправками на синтаксис). Если вы работаете с криптографией, теорией чисел или просто решаете математическую задачу — эта инструкция поможет оптимизировать процесс.
1. Базовый метод: функция НОД для пары чисел
Самый простой способ проверить взаимную простоту двух чисел — использовать встроенную функцию НОД (или GCD в английской версии). Она возвращает наибольший общий делитель аргументов. Если результат равен 1 — числа взаимно просты.
Формула для ячеек A1 и B1:
=ЕСЛИ(НОД(A1;B1)=1; "Взаимно простые"; "Не взаимно простые")
Пример работы:
| Число 1 (A) | Число 2 (B) | Результат |
|---|---|---|
| 8 | 15 | Взаимно простые |
| 12 | 18 | Не взаимно простые |
| 25 | 36 | Взаимно простые |
| 100 | 75 | Не взаимно простые |
⚠️ Внимание: Функция НОД работает только с целыми числами. Если в ячейках дробные значения, Excel округлит их до ближайшего целого, что может привести к ошибкам. Например, НОД(9.9; 14.1) вернёт НОД(10; 14) = 2, хотя исходные числа не целые.
2. Проверка взаимной простоты для диапазона чисел
Если нужно проверить взаимную простоту всех пар чисел в столбце (например, для списка из 100 элементов), базовая функция НОД не подойдёт — она анализирует только два аргумента. Здесь поможет формула массива с комбинацией НОД и И.
Допустим, у вас числа в диапазоне A2:A10. Чтобы проверить, взаимно просты ли все числа в этом списке (т.е. НОД любой пары равен 1), используйте:
=ЕСЛИ(И(НОД(A2:A10;A2:A10)=1); "Все взаимно просты"; "Есть не простые пары")
Вводите формулу как формулу массива: после ввода нажмите Ctrl+Shift+Enter (в новых версиях Excel это не обязательно).
🔹 Как это работает:
- 📌
НОД(A2:A10;A2:A10)создаёт матрицу НОД для всех возможных пар в диапазоне. - 📌
И(...=1)проверяет, что все значения в этой матрице равны 1. - 📌 Если хотя бы одна пара имеет НОД > 1, результат будет
ЛОЖЬ.
Почему формула возвращает #ЗНАЧ!?
Ошибка #ЗНАЧ! возникает, если в диапазоне есть пустые ячейки или текст. Используйте =ЕЧИСЛО(A2:A10) для фильтрации данных.
3. Поиск взаимно простых пар в таблице
Предположим, у вас есть таблица с двумя столбцами (A и B), и нужно отметить строки, где числа взаимно просты. Для этого:
- В столбце
Cвведите формулу:=ЕСЛИ(НОД(A2;B2)=1; "✅ Да"; "❌ Нет") - Растяните формулу на весь диапазон.
- Добавьте условное форматирование для визуального выделения:
- Выделите столбец
C.- Перейдите в
Главная → Условное форматирование → Создать правило.- Установите формат для ячеек, содержащих текст
"✅ Да"(зелёный фон).
Пример результата:
| A | B | Взаимно простые? |
|---|---|---|
| 14 | 25 | ✅ Да |
| 21 | 28 | ❌ Нет |
| 35 | 12 | ✅ Да |
⚠️ Внимание: Если в таблице больше 10 000 строк, формулы массива могут значительно замедлить работу файла. В таких случаях лучше использовать Power Query или VBA (см. разделы 4 и 5).
Удалить пустые ячейки|Проверить формат чисел (должны быть "Общий" или "Числовой")|Отсортировать данные по возрастанию (опционально)|Создать резервную копию файла-->
4. Автоматизация с Power Query
Power Query (или Get & Transform в новых версиях) позволяет обрабатывать большие массивы данных без формул. Вот как проверить взаимную простоту для пар чисел:
- Выделите исходные данные и нажмите
Данные → Из таблицы/диапазона(илиData → From Table/Range). - В редакторе Power Query добавьте пользовательский столбец:
- Нажмите
Добавить столбец → Пользовательский столбец.- Введите формулу:
= if Number.Mod(Number.GCD([Число1], [Число2]), 1) = 0 then "Да" else "Нет" - Загрузите данные обратно в Excel.
🔹 Преимущества метода:
- 🚀 Обрабатывает миллионы строк без замедления.
- 🔄 Легко обновляется при изменении исходных данных.
- 📊 Можно добавить дополнительные столбцы (например, сам НОД для анализа).
🔹 Недостатки:
- ⚠️ Требует знания синтаксиса M (язык Power Query).
- ⚠️ Не поддерживает динамические диапазоны (нужно обновлять вручную).
5. Продвинутый метод: VBA-скрипт для массовой проверки
Если вам нужно регулярно проверять взаимную простоту для больших наборов данных, напишите простую процедуру на VBA. Например, этот скрипт проверяет все пары в выделенном диапазоне и выводит результат в новой таблице:
Sub CheckCoprime()
Dim rng As Range, cell1 As Range, cell2 As Range
Dim i As Long, j As Long, lastRow As Long
Dim ws As Worksheet
Set ws = ActiveSheet
Set rng = Selection
lastRow = ws.Cells(ws.Rows.Count, rng.Column).End(xlUp).Row
' Создаём заголовки для результата
ws.Cells(1, rng.Column + 2).Value = "Число 1"
ws.Cells(1, rng.Column + 3).Value = "Число 2"
ws.Cells(1, rng.Column + 4).Value = "Взаимно простые?"
' Проверяем все пары
Dim resultRow As Long: resultRow = 2
For i = 1 To lastRow
For j = i + 1 To lastRow
If Application.WorksheetFunction.GCD(rng.Cells(i, 1), rng.Cells(j, 1)) = 1 Then
ws.Cells(resultRow, rng.Column + 2).Value = rng.Cells(i, 1).Value
ws.Cells(resultRow, rng.Column + 3).Value = rng.Cells(j, 1).Value
ws.Cells(resultRow, rng.Column + 4).Value = "Да"
resultRow = resultRow + 1
End If
Next j
Next i
End Sub
🔹 Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите диапазон с числами и запустите макрос (
F5).
⚠️ Внимание: Скрипт создаёт комбинации всех возможных пар в диапазоне. Для 100 чисел это 4950 строк результата! Если данных много, используйте фильтрацию или разбивайте задачу на части.
6. Типичные ошибки и как их избежать
При работе с взаимно простыми числами в Excel пользователи часто сталкиваются с следующими проблемами:
| Ошибка | Причина | Решение |
|---|---|---|
| #ЧИСЛО! | Отрицательные числа или ноль | Используйте =АБС(A1) для модуля |
| #ЗНАЧ! | Текст или пустые ячейки | Добавьте проверку =ЕЧИСЛО(A1) |
| Медленная работа | Слишком много формул массива | Перейдите на Power Query или VBA |
| Неверный НОД | Дробные числа округлены | Примените =ЦЕЛОЕ(A1) перед НОД |
🔹 Совет для больших чисел:
Функция НОД в Excel имеет ограничение: она корректно работает с числами до 2^53 - 1 (около 9×10¹⁵). Для бо́льших значений используйте Python с библиотекой math.gcd или специализированные математические пакеты.
FAQ: Частые вопросы по взаимно простым числам в Excel
Можно ли проверить взаимную простоту для трёх и более чисел?
Да, но нужно убедиться, что НОД всех пар в наборе равен 1. Например, для чисел 6, 10, 15:
- НОД(6;10) = 2 → уже не взаимно просты.
Используйте формулу массива:
=ЕСЛИ(МИН(ЕСЛИ(НОД($A$2:$A$4;$A$2:$A$4)>1;НОД($A$2:$A$4;$A$2:$A$4);""))="";"Взаимно просты";"Не взаимно просты")
Как найти все взаимно простые пары в диапазоне автоматически?
Лучше использовать VBA (см. раздел 5) или Power Query. Вручную это займёт слишком много времени. Альтернатива — создать таблицу со всеми комбинациями через Промежуточные итоги и затем применить НОД.
Почему НОД(0;5) возвращает 5, а не ошибку?
Математически НОД(0; n) = n, так как ноль делится на любое число. Если вам нужно исключить нули, добавьте проверку:
=ЕСЛИ(И(A1<>0;B1<>0);ЕСЛИ(НОД(A1;B1)=1;"Да";"Нет");"Ошибка: ноль")
Можно ли использовать Google Sheets вместо Excel?
Да, в Google Sheets есть аналогичная функция =GCD(A1;B1). Синтаксис формул массива отличается — вместо Ctrl+Shift+Enter используйте =ARRAYFORMULA(.... Пример:
=ARRAYFORMULA(IF(GCD(A2:A10;B2:B10)=1;"Да";"Нет"))
Как визуализировать взаимно простые числа на графике?
Создайте точечную диаграмму (XY Scatter Plot), где ось X — первое число, Y — второе. Используйте условное форматирование точек:
- Добавьте столбец с формулой
=НОД(A2;B2). - Постройте график, где цвет точек зависит от значения НОД (1 — зелёный, >1 — красный).