Как мы все знаем, простое число — это натуральное число, которое содержит только два различных делителя натуральных чисел: единицу и само себя. Если у вас есть список чисел на листе, как вы можете проверить, являются ли они простыми числами?
Проверьте, является ли число простым числом с помощью формулы массива
Проверьте, является ли число простым числом с помощью функции, определяемой пользователем
Проверьте, является ли число простым числом с помощью формулы массива
Следующая формула может помочь вам определить число, является ли оно простым числом или нет, пожалуйста, сделайте следующее:
1. Введите следующую формулу в пустую ячейку — например, C2 рядом с вашими данными:
=IF(A2=2,»Prime»,IF(AND(MOD(A2,ROW(INDIRECT(«2:»&ROUNDUP(SQRT(A2),0))))<>0),»Prime»,»Not Prime»)) (A2 содержит ли ячейка число, которое вы хотите проверить), а затем нажмите Shift + Ctrl + Enter вместе, и вы получите результат, если число простое, в ячейке будет отображаться «Prime», если нет, будет отображаться «Not Prime», см. снимок экрана:
2. Затем выберите ячейку C2 и перетащите дескриптор заполнения вниз к ячейкам, к которым вы хотите применить эту формулу, и все числа будут идентифицированы, является ли это простым числом или нет. Смотрите скриншот:
Проверьте, является ли число простым числом с помощью функции, определяемой пользователем
Следующие Функция, определяемая пользователем также может помочь вам проверить числа, простые или нет, пожалуйста, сделайте следующее:
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.
Код VBA: проверьте, является ли число простым или нет:
Function CheckPrime(Numb As Single) As Boolean
'Updateby Extendoffice
Dim X As Long
If Numb < 2 Or (Numb <> 2 And Numb Mod 2 = 0) _
Or Numb <> Int(Numb) Then Exit Function
For X = 3 To Sqr(Numb) Step 2
If Numb Mod X = 0 Then Exit Function
Next
CheckPrime = True
End Function
3. Затем сохраните и закройте этот код, вернитесь на рабочий лист и введите следующую формулу: = checkprime (A2) в пустую ячейку рядом с вашим списком номеров, а затем перетащите дескриптор заполнения вниз к ячейкам, которые вы хотите содержать эту формулу, если число является простым числом, оно будет отображать ИСТИНА, если нет, оно отобразит ЛОЖЬ, см. снимок экрана:
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
A prime number is a number that is greater than 1 and has no positive divisor other than 1 and the number itself.
Approach:
To check whether the number is prime or not we have to divide the number with all the numbers between 2 and the square root of that number. And if it gives remainder 0 in any of the divisions it means that the number is a positive factor and ultimately results in a non-prime number. So if any of the divisions don’t result in the remainder 0 then it means that the number doesn’t have any positive factor and ultimately results in the Prime number.
- Take the number
- If the number is 2 then it is a Prime number else follow the next steps
- Derive the square root of the number
- Take the upper bound of the square root obtained and then minus it by one
- Divide the number with all the numbers between 2 and the square root of the number
- If the remainder is 0 in any of the divisions then non-prime.
- Else it is the prime number
Formula:
=IF(F6=2,"Prime",IF(AND(MOD(F6,ROW(OFFSET($C$2,,,ROUNDUP(SQRT(F6),0)-1)))<>0),"Prime","Not Prime"))
Let’s see each of these functions one by one so that it is clearly understood.
Step1: First of all check if the given number is 2 or not and if it is TRUE then print out that it is PRIME.
Step 2: If the number is not 2 then derive the square root of the given number.
Step 3: Round off the output of the square root and minus one from it ( we have to check from 2 to square root of a given number which is not included)
Step 4: Taking the range of numbers from the 2 to the one less than the square root of the given number.
Step 5: Taking one by one, the numbers from that range to evaluate further for the division.
Step-6: Dividing the given number from the number in the range of 2 to one less then square root of the given number and checking whether it is 0 or not. If it is 0 then the given number is NOT-PRIME and if it is not 0 then the given number is PRIME.
Output:
Like Article
Save Article
Использование массивов позволяют упростить многие вычисления.
В частности все манипуляции, описанные в статье «Является ли число простым», можно заменить одной формулой.
Пусть в ячейке A1 находится число и нужно проверить простое ли оно. Достаточно в ячейку B1 ввести такую формулу:
=ЕСЛИ(МИН(ОСТАТ(A1;СТРОКА(ДВССЫЛ(«2:»&ОКРУГЛ(КОРЕНЬ(A1);)))))=0;»составное»;»простое»)
Можно пойти еще дальше и записать в ячейке C1 формулу:
=СУММ(—(ОСТАТ(A1;СТРОКА(ДВССЫЛ(«1:»&A1)))=0))
Эта формула покажет сколько у числа в ячейке A1 делителей.
Например, для числа 12 количество делителей будет 6, а именно 1, 2, 3, 4, 6 и само число 12.
Указанные формулы используют массивы, поэтому после окончания ввода нужно нажать CTRL+SHIFT+ENTER.
Похожие по тематике посты — еще почитать:
cheesepls Пользователь Сообщений: 3 |
Здравствуйте! Помогите, пожалуйста, решить задание. Никак не догоняю. |
Bema Пользователь Сообщений: 6761 |
VBA или формулой? Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл |
cheesepls Пользователь Сообщений: 3 |
#3 20.05.2018 16:20:15
VBA |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#4 20.05.2018 16:22:33 Доброе время суток
А по конкретнее? Решето Эратосфена
Коллега, а как?! Изменено: Андрей VG — 20.05.2018 16:23:08 |
||||
Bema Пользователь Сообщений: 6761 |
#5 20.05.2018 16:32:52
Понятно, что макрос, но можно и такой достаточно простой формулой массива: Прикрепленные файлы
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл |
||
sokol92 Пользователь Сообщений: 4446 |
Здравствуйте, Bema! Симпатичная формула, но, начиная с определенного значения дает, естественно, ошибку. Кроме того, проверять делители можно до квадратного корня из числа. |
Bema Пользователь Сообщений: 6761 |
#7 20.05.2018 17:02:19
Здравствуйте, sokol92, Видимо строки закончились. Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл |
||
sokol92 Пользователь Сообщений: 4446 |
#8 20.05.2018 17:22:49
Да, конечно. Тема непонятна. Достаточно простого поиска в сети, например «prime number vba» Изменено: sokol92 — 20.05.2018 17:24:58 Владимир |
||
bedvit Пользователь Сообщений: 2477 Виталий |
Когда-то писал довольно шустрый алгоритм. Число до 30 знаков отрабатывает за секунды. Реализовано как отдельная программа. Решение на С++ . Можно, конечно положить в dll или xll, открывать в Excel или в VBA. Но кому это нужно, обычно хотят, что бы все расжевали и код с файлом примером приложили, как готовое решение. Поэтому оставлю ссылку для спецов форума и энтузиастов (будет спрос, можно и библу набросать). «Бритва Оккама» или «Принцип Калашникова»? |
sokol92 Пользователь Сообщений: 4446 |
Здравствуйте, Виталий! Можно добавить соответствующие функции в Ваш интерфейс к MPIR. |
bedvit Пользователь Сообщений: 2477 Виталий |
sokol92, Приветствую! Да, можно положить в СОМ, как свойство или метод класса целых чисел, возвращающий массив решений или перечисление в строке через разделитель ( в проекте на библиотеках MPIR ) «Бритва Оккама» или «Принцип Калашникова»? |
sokol92 Пользователь Сообщений: 4446 |
Именно это я и имел в виду. Эффективность MPIR в такого рода задачах на несколько порядков выше, чем кода на VBA. |
bedvit Пользователь Сообщений: 2477 Виталий |
Да это так, узкие места в этих библиотеках написаны на ассемблере (быстрее асма ничего не работает). Можно реализовать именно проверку на простоту — да/нет, это будет ещё быстрее, чем поиск делителей в моем решении. Мое решение, если вы почитаете блог, тоже основано на MPIR, многопоточности, оптимизации wheel factorization и некоторых других идеях оптимизации. Изменено: bedvit — 20.05.2018 20:26:11 «Бритва Оккама» или «Принцип Калашникова»? |
bedvit Пользователь Сообщений: 2477 Виталий |
Если это будет интересно форуму, добавлю свойство в СОМ, и в VBA «Программа, проверяющая число на простоту» будет размером/состоять из… 3 строк «Бритва Оккама» или «Принцип Калашникова»? |
БМВ Модератор Сообщений: 21385 Excel 2013, 2016 |
Bema, ну снова вы за смещение, когда уж от летучести то через a1:index(A:A …. Изменено: БМВ — 20.05.2018 21:08:38 По вопросам из тем форума, личку не читаю. |
БМВ, Изменено: Ігор Гончаренко — 20.05.2018 21:23:03 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
БМВ Модератор Сообщений: 21385 Excel 2013, 2016 |
Ігор Гончаренко, По вопросам из тем форума, личку не читаю. |
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Ігор Гончаренко, БМВ, вы смотрелм ссылку от Андрея? Как по мне, Решето Эратосфена уже очень неплохой алгоритм, а там ещё и модификации есть… Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
bedvit Пользователь Сообщений: 2477 Виталий |
Jack Famous, предполагаю, нужно готовое решение. Потому как и Андрей давал ссылку и я на свой блог , где прописан быстрый алгоритм нахождения простых чисел. У меня и решение в открытом доступе, правда не на VBA, но на VBA можно реализовать похожий или сделать библу, добавить в существующий проект (см.посты 10-14). Но, это же надо читать, вникать, писать код Изменено: bedvit — 22.05.2018 10:17:03 «Бритва Оккама» или «Принцип Калашникова»? |
БМВ Модератор Сообщений: 21385 Excel 2013, 2016 |
Jack Famous, Алгоритмом то каждый может, вы формулой попробуйте По мотивам следующего поста от MCH =CHOOSE(IF(INT(A1)<>A1;;IF(A1<4;1;IF(MOD(A1;2)=0;;IF(SUM(—(0=MOD(A1/((ROW($A$2:INDEX($A:$A;SQRT(A1)/2))-1)*2+1);1)))=1;1))))+1;»Составное»;»Простое») Прикрепленные файлы
Изменено: БМВ — 22.05.2018 12:33:55 По вопросам из тем форума, личку не читаю. |
MCH Пользователь Сообщений: 3875 |
#21 22.05.2018 10:38:24 если нужно на VBA (обрабатывает 15-значные числа)
|
||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
bedvit, в вашу беседу с sokol92 я вообще предпочёл не встревать — там что-то метафизическое для меня)))) Изменено: Jack Famous — 22.05.2018 13:40:02 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
sokol92 Пользователь Сообщений: 4446 |
#23 22.05.2018 16:13:32
Никакой метафизики, чистая математика. В свое время профессиональный интернациональный коллектив специалистов по теории чисел создал высокооптимизированную библиотеку MPIR, которая, в частности, работает с большими целыми числами. Виталий ( bedvit ) взял на себя тяжкий труд по популяризации этой библиотеки среди широкого круга пользователей VBA путем разработки специализированных классов, реализующих интерфейсы к MPIR. Естественно, что любой теоретикочисловой алгоритм, реализованный на VBA, будет на порядки менее эффективен, что алгоритм из MPIR. Владимир |
||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
sokol92, спасибо вам за науку, а bedvit за очередную полезную разработку Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
bedvit Пользователь Сообщений: 2477 Виталий |
sokol92, благодарю за оценку моего проекта и понимании сколько трудов это стоило. Но не всем нужно столь точные вычисления. Это объективно. Сейчас пользуются не так много народа, но они есть и я этим вполне удовлетворен. Полученные знания и навыки тоже при мне. Двойная польза. Работает все это очень просто. Да чуть не забыл — в библиотеках есть другие функции работы с длинными числами (вся арифметика) — все рабочие, можно тоже пользоваться. Изменено: bedvit — 22.05.2018 22:09:57 «Бритва Оккама» или «Принцип Калашникова»? |
bedvit Пользователь Сообщений: 2477 Виталий |
Для Excel x64 (2007 и выше). Делал быстро (как всегда по профилю — завал), поэтому в случае выявлении багов смело пишите (некоторый тестинг сделал, насколько позволяет время). Эти замечания относятся к стабильности работы. Арифметика должна быть верная, алгоритмы проверены приличным сроком использования. Изменено: bedvit — 22.05.2018 22:13:26 «Бритва Оккама» или «Принцип Калашникова»? |
bedvit Пользователь Сообщений: 2477 Виталий |
#27 22.05.2018 22:46:42 Функции можно использовать и на VBA, через
. sokol92, если вы пользуетесь COM, могу добавить и в методы класса целых чисел. «Бритва Оккама» или «Принцип Калашникова»? |
||
Тест на простоту числа — готов оплатить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |