Формула простых чисел в excel

Пробовали ли вы когда-нибудь в Excel перечислить все простые числа между двумя заданными числами? В этой статье я расскажу о некоторых интересных методах решения этой задачи.

Генерация всех простых чисел между двумя заданными числами с помощью формул

Генерация всех простых чисел между двумя заданными числами с помощью функции, определяемой пользователем


Генерация всех простых чисел между двумя заданными числами с помощью формул

Потрясающе! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Сэкономьте 50% своего времени и сократите тысячи щелчков мышью каждый день!

Комбинируя функцию Define Name и формулы, вы можете перечислить или сгенерировать все простые числа между двумя конкретными числами. Пожалуйста, сделайте следующее:

1 . Создайте имя первого диапазона, нажав Формулы > Диспетчер имен и в диалоговом окне Диспетчер имен нажмите New , см. снимок экрана:

2 . В диалоговом окне Новое имя в текстовом поле Имя введите rng в качестве имени диапазона, а затем введите эту формулу: = ROW (INDIRECT (Sheet1! $ B $ 1 & “:” & Sheet1! $ B $ 2)) ( Sheet1 – это ваш текущий рабочий лист, который вы использовали, и являются начальным и конечным числами, которые вы указали) в текстовое поле Относится к , затем нажмите кнопку OK , чтобы вернуться к предыдущему диалоговому окну. См. Снимок экрана:

3 . Нажмите кнопку Создать , чтобы создать другое имя диапазона, в диалоговом окне Новое имя введите имя prime в текстовое поле Имя , а затем введите эту формулу: = SMALL (IF (MMULT (- (IF (rng> TRANSPOSE (rng-Sheet1! $ B $ 1 + 2) ), MOD (rng, (rng> TRANSPOSE (rng-Sheet1! $ B $ 1 + 2)) * TRANSPOSE (rng-Sheet1! $ B $ 1 + 2))) = 0), rng-Sheet1! $ B $ 1 + 2 ) = 0, rng), ROW (INDIRECT (“1:” & Sheet1! $ B $ 2))) ( rng – первое имя диапазона, которое вы создали на шаге 2), в текстовое поле Относится к , см. снимок экрана:

4 . Затем нажмите OK , закройте диалоговые окна и выберите один столбец, в котором вы хотите перечислить все простые числа, и введите следующую формулу: = ЕСЛИОШИБКА (простое число, “”) ( prime – это имя диапазона, созданное на шаге 3) в строку формул, а затем нажмите CTRL + SHIFT + Вместе с клавишами ENTER все простые числа между заданными двумя числами отображаются, как показано на следующем снимке экрана:


Создает все простые числа между двумя заданные числа с функцией, определяемой пользователем

Если первый метод несколько сложен, здесь вы можете применить функцию, определяемую пользователем , чтобы решить эту проблему.

1 . Удерживая нажатыми клавиши ALT + F11 , откройте окно Microsoft Visual Basic для приложений .

2 . Нажмите Вставить > Module и вставьте следующий код в окно Module .

Код VBA: генерировать все простые числа между двумя определенными числами:

3 . Затем сохраните и закройте этот код, вернитесь на рабочий лист, введите следующую формулу: = prime (10,100) ( 10 – это начальный номер, а – конечный номер, между которыми вы хотите получить простые числа, вы можете изменить их по своему усмотрению), а затем нажмите клавишу Enter , и все простые числа отобразятся в одной ячейке, см. снимок экрана:


Использование массивов позволяют упростить многие вычисления.
В частности все манипуляции, описанные в статье «Является ли число простым», можно заменить одной формулой.

Пусть в ячейке A1 находится число и нужно проверить простое ли оно. Достаточно в ячейку B1 ввести такую формулу:

=ЕСЛИ(МИН(ОСТАТ(A1;СТРОКА(ДВССЫЛ(«2:»&ОКРУГЛ(КОРЕНЬ(A1);)))))=0;»составное»;»простое»)

Можно пойти еще дальше и записать в ячейке C1 формулу:

=СУММ(—(ОСТАТ(A1;СТРОКА(ДВССЫЛ(«1:»&A1)))=0))

Эта формула покажет сколько у числа в ячейке A1 делителей.
Например, для числа 12 количество делителей будет 6, а именно 1, 2, 3, 4, 6 и само число 12.

Указанные формулы используют массивы, поэтому после окончания ввода нужно нажать CTRL+SHIFT+ENTER.

Похожие по тематике посты — еще почитать:

A number greater than 1 with no positive divisors besides 1 and the number itself is referred to as a prime number. In this article, we will be discussing two approaches for generating all prime numbers between two given numbers in excel. In the first approach, we are creating formulas for generating prime numbers between two numbers, and in the second approach, we are creating a new user-defined function that is simple and easy in comparison to the first approach.

Approach 1: Using Formulas

The Define Name function and formulas can be used to list or generate every prime number between two certain values.

Step 1: Follow, the below steps for creating the first range name

  1. Click on the Formulas tab
  2. Click on Name Manager
  3. Once we click on Name Manager, a new pop-up will be opened. Now, Click New Button.

Name Manager

Step 2: In the New Name popup window, Enter “range” as the range name in the “Name” text field. Now, Enter this formula: 

=ROW(INDIRECT(Sheet1!$B$1&”:”&Sheet1!$B$2))

Sheet1 is the name of the worksheet we are now using, and B1 and B2 are the start and finish numbers we selected in the Refers to the text box.

INDIRECT Function

Press the “OK” button and close the pop window.

Step 3: Now, Again click New Button for creating another range name. Enter “prime” as a name in Name Field in the New Name pop window. Enter this below formula in refers to the field.

=SMALL(IF(MMULT(–(IF(range>TRANSPOSE(range-Sheet1!$B$1+2),MOD(range,(range>TRANSPOSE(range-Sheet1!$B$1+2))*TRANSPOSE(range-Sheet1!$B$1+2)))=0), range-Sheet1!$B$1+2)=0,range),ROW(INDIRECT(“1:”&Sheet1!$B$2)))

range variable is created in step 2.

prime

Click the “OK” button and close the pop window.  

Step 4: Now, Write any two numbers or ranges (B1 and B2 Column) in which range we want to print or list prime numbers as start and end numbers. We need to select any column in which we want to list or print prime numbers and we need to enter this formula in the formula bar:

=IFERROR(prime,””)

prime is a function that is created in step 3. Once we entered the formula in the formula bar and then press CTRL + SHIFT + ENTER keys together, all prime numbers will be listed in the selected column between the mentioned range.

IFERROR

Approach 2: Using User-Defined Functions

The first method is a little bit difficult, so, in this approach, we will apply a user-defined function for generating a prime number between two numbers. 

Step 1: Click the ALT + F11 keys together for opening the Microsoft Visual Basic for Applications window.

Insert in VBA

Step 2: First, Click on Insert Button and then click the Module button. 

Module in VBA

Step 3: Once we clicked on the Module button, a new dialog box will open. Just copy and paste this below code to open the dialog box. 

Function PRIME(Start_val, End_val As Long)

‘Updateby Extendoffice 20160613

Dim val As String

For i = Start_val To End_val

   For j = 2 To i – 1

       If i Mod j = 0 Then GoTo 20:

   Next j

   val = val & i & “,”

20:

Next i

PRIME = val

End Function

Screenshot:

prime numbers between a range

Step 4: Press CTRL + S to save this file and the dialog box will be closed, go back to our worksheet. Now, Select any cell and enter this below formula with two numbers as parameters such as =prime(10, 50) where 10 is starting number and 50 is the ending number. Press ENTER Key and prime numbers will be displayed to our selected cell.

prime numbers

 

Dear bear

Пользователь

Сообщений: 6
Регистрация: 01.01.1970

Здравствуйте! Как определить простое ли число или составное в эксель без VBA?!  

 

Bema

Пользователь

Сообщений: 6761
Регистрация: 15.02.2016

Добрый день. Вот такое соорудил, только на 1 выдает ошибку.

Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл

 

Пытливый

Пользователь

Сообщений: 4587
Регистрация: 22.12.2012

#3

27.12.2016 12:34:46

Можно как-то так формулой массива:
P.S. Добавил проверку на 1

Код
=ЕСЛИ(В1=1;"простое";ЕСЛИ(СУММ(--(ОСТАТ(В1;СТРОКА(СМЕЩ($A$1;0;0;В1;1)))=0))=2;"простое";"составное"))

В В1 — исследуемое число.

Изменено: Пытливый27.12.2016 12:37:12

Кому решение нужно — тот пример и рисует.

 

mallanik

Пользователь

Сообщений: 1
Регистрация: 27.12.2016

#4

27.12.2016 12:51:24

Код
=ЕСЛИ(B1=1;"Простое";ЕСЛИ(СУММ(--(ОСТАТ(B1;СТРОКА(ДВССЫЛ("1:"&B1)))=0))=2;"Простое";"Составное"))

Для этой формулы не нужен список чисел на листе от 1 до исследуемого числа.

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

формула для больших чисел (больше 2^20):
=ЕСЛИ(И(ОСТАТ(A1;СТРОКА(СМЕЩ($A$2;;;A1^0,5)))<>0)+(A1<4);»Простое»;»Составное»)

l

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Формула массива:
=ЕСЛИ(A1<4;»Простое»;ЕСЛИ(И(ОСТАТ(A1;СТРОКА(A2:ИНДЕКС(A:A;A1-1)))<>0);»Простое»;»Составное»))

 

Казанский

Пользователь

Сообщений: 8839
Регистрация: 11.01.2013

#7

28.12.2016 00:46:05

Цитата
MCH написал:
формула для больших чисел (больше 2^20)

По задумке, формула должна работать для чисел до 2^40, т.е. до 1,1*10^12.
Однако, формула возвращает #ЧИСЛО! уже при 268’435’456, т.е. при 2^28  :(
Как я выяснил, это связано с ограничением функции ОСТАТ(х;у) — результат деления х/у должен быть меньше 2^27=134’217’728!
То есть ОСТАТ(134217727,9999;1) =0,9999, а ОСТАТ(134217728;1) =#ЧИСЛО!
ОСТАТ(2^27*3-1;3) =2, а ОСТАТ(2^27*3;3) =#ЧИСЛО!
и т.д.
Можно переписать формулу, не используя функцию ОСТАТ, тогда она действительно работает до 10^12, формула массива

Код
=ЕСЛИ(И(ЧАСТНОЕ(A1;СТРОКА(СМЕЩ($A$2;;;A1^0,5)))<>A1/СТРОКА(СМЕЩ($A$2;;;A1^0,5)))+(A1<4);"Простое";"Составное")
 

Казанский

Пользователь

Сообщений: 8839
Регистрация: 11.01.2013

#8

28.12.2016 01:27:46

Можно расширить диапазон работы формулы еще в 4 раза, примерно до 4,3*10^12, если не проверять четные числа. Формула массива

Код
=ЕСЛИ(A1<4;"Простое";ЕСЛИ(ЕЧЁТН(A1);"Составное";ЕСЛИ(И(ЧАСТНОЕ(A1;СТРОКА(СМЕЩ($A$1;;;A1^0,5/2))*2+1)<>A1/(СТРОКА(СМЕЩ($A$1;;;A1^0,5/2))*2+1));"Простое";"Составное")))
 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

#9

28.12.2016 08:45:27

UDF, которая достаточно быстро раскладывает на простые множители пятнадцатизначные числа (опубликовано

здесь

)

Код
Function PrimeFact$(ByVal n#)
    Dim i&, txt$
    If n < 4 Then
        PrimeFact = "Prime"
        Exit Function
    End If
    i = 3
    While Fix(n / 2) = n / 2
        n = Fix(n / 2)
        txt = txt & "*2"
    Wend
    While CDbl(i) * i <= n
        If Fix(n / i) <> n / i Then i = i + 2 Else n = Fix(n / i): txt = txt & "*" & i
    Wend
    If n > 1 Then txt = txt & "*" & n
    If InStr(2, txt, "*") Then PrimeFact = Mid$(txt, 2) Else PrimeFact = "Prime"
End Function 

Прикрепленные файлы

  • PrimeFact.xlsm (17.42 КБ)

Изменено: MCH28.12.2016 08:57:51

 

olgats

Пользователь

Сообщений: 2
Регистрация: 28.12.2016

Bema, спасибо за пример, а если заменить =2 на <=2 это проблему с 1 не решит?

 

Bema

Пользователь

Сообщений: 6761
Регистрация: 15.02.2016

Дополнительная проверка на еденицу решит проблему.
=ЕСЛИ(A1=1;»Простое»;ЕСЛИ(СУММ(—((ОСТАТ(A1;СТРОКА($B$1:СМЕЩ($B$1;A1-1;))))=0))=2;»Простое»;»Составное»))
И формула работает до числа 65536, по количеству строк на листе Эксель.

Изменено: Bema28.12.2016 09:43:12

Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл

 

olgats

Пользователь

Сообщений: 2
Регистрация: 28.12.2016

#12

28.12.2016 12:33:50

Bema,  ну это как-то не изящно, надо добавлять 15 символов. Кстати 65536 можно увеличить до 1млн в новом экселе

Вы когда-нибудь пытались в Excel перечислить все простые числа между двумя заданными числами? В этой статье я расскажу о некоторых интересных методах решения этой задачи.

Сгенерировать все простые числа между двумя заданными числами с помощью формул

Генерация всех простых чисел между двумя заданными числами с помощью функции, определяемой пользователем


стрелка синий правый пузырь Сгенерировать все простые числа между двумя заданными числами с помощью формул

Объединение Определить имя функции и формулы, вы можете перечислить или сгенерировать все простые числа между двумя конкретными числами. Пожалуйста, сделайте следующее:

1. Создайте имя первого диапазона, нажав Формулы > Менеджер именИ в Менеджер имен диалоговое окно, нажмите Новинки кнопку, см. снимок экрана:

список документов простые числа 1

2. В Новое имя диалоговое окно в Имя и фамилия текстовое поле, пожалуйста, введите дальность в качестве имени диапазона, а затем введите эту формулу: = СТРОКА (КОСВЕННАЯ (Лист1! $ B $ 1 & «:» & Лист1! $ B $ 2)) (Sheet1 ваш текущий рабочий лист, который вы использовали, B1 и B2 являются начальным и конечным числами, которые вы указали) в Относится к текстовое поле, затем щелкните OK кнопку, чтобы вернуться к прежнему диалогу. Смотрите скриншот:

список документов простые числа 2

3. Продолжайте нажимать Новинки кнопку, чтобы создать другое имя диапазона, в Новое имя диалоговое окно введите имя простое число в Имя и фамилия текстовое поле, а затем введите эту формулу: =SMALL(IF(MMULT(—(IF(rng>TRANSPOSE(rng-Sheet1!$B$1+2),MOD(rng,(rng>TRANSPOSE(rng-Sheet1!$B$1+2))*TRANSPOSE(rng-Sheet1!$B$1+2)))=0),rng-Sheet1!$B$1+2)=0,rng),ROW(INDIRECT(«1:»&Sheet1!$B$2))) (дальность это первое имя диапазона, которое вы создали на шаге 2) в Относится к текстовое поле, см. снимок экрана:

список документов простые числа 3

4. Затем нажмите OK и закройте диалоговые окна, выберите один столбец, в котором вы хотите перечислить все простые числа, и введите эту формулу: = ЕСЛИОШИБКА (штрих; «»)(простое число — это имя диапазона, которое вы создали на шаге 3) в строке формул, а затем нажмите CTRL + SHIFT + ВВОД вместе, все простые числа между заданными двумя числами перечислены, как показано на следующем снимке экрана:

список документов простые числа 4


стрелка синий правый пузырь Генерация всех простых чисел между двумя заданными числами с помощью функции, определяемой пользователем

Если первый метод несколько сложен, здесь вы можете применить Функция, определяемая пользователем решить его.

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: генерировать все простые числа между двумя конкретными числами:

Function PRIME(St, En As Long)
'Updateby Extendoffice 20160613
Dim num As String
For n = St To En
    For m = 2 To n - 1
        If n Mod m = 0 Then GoTo 20:
    Next m
    num = num & n & ","
20:
Next n
PRIME = num
End Function

3. Затем сохраните и закройте этот код, вернитесь на рабочий лист, введите эту формулу: = простое число (10,100) (10 — начальный номер, а 100 — конечное число, между которым вы хотите получить простые числа, вы можете изменить их по своему усмотрению), а затем нажмите Enter key, и все простые числа отображаются в одной ячейке, см. снимок экрана:

список документов простые числа 5


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • 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

    Понравилась статья? Поделить с друзьями:
  • Формула процента прибыли в excel
  • Формула простой суммы в excel
  • Формула простого числа в excel
  • Формула проставить порядковый номер в excel
  • Формула просмотр нет в excel