Функция простого числа excel

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

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

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

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

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

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

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

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

Как мы все знаем, простое число — это натуральное число, которое содержит только два различных делителя натуральных чисел: единицу и само себя. Если у вас есть список чисел на листе, как вы можете проверить, являются ли они простыми числами?

Проверьте, является ли число простым числом с помощью формулы массива

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


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

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

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», см. снимок экрана:

док проверим если простое 1

2. Затем выберите ячейку C2 и перетащите дескриптор заполнения вниз к ячейкам, к которым вы хотите применить эту формулу, и все числа будут идентифицированы, является ли это простым числом или нет. Смотрите скриншот:

док проверим если простое 2


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

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

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) в пустую ячейку рядом с вашим списком номеров, а затем перетащите дескриптор заполнения вниз к ячейкам, которые вы хотите содержать эту формулу, если число является простым числом, оно будет отображать ИСТИНА, если нет, оно отобразит ЛОЖЬ, см. снимок экрана:

док проверим если простое 3


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

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

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

вкладка kte 201905


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

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

офисный дно

 

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млн в новом экселе

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

    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

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