跳到主要內容

如何在Excel中檢查數字是否為素數?

眾所周知,素數是一個自然數,僅包含兩個不同的自然數除數:一個和它本身。 如果工作表中有數字列表,如何檢查數字是否為質數?

使用數組公式檢查數字是否為質數

使用用戶定義的功能檢查數字是否為質數


箭頭藍色右氣泡 使用數組公式檢查數字是否為質數

以下公式可以幫助您確定數字是否是質數,請按照以下步驟操作:

1。 在數據旁邊的空白單元格(例如C2)中輸入以下公式:

=IF(A2=2,"Prime",IF(AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0),"Prime","Not Prime")) (A2 是該單元格包含您要檢查的數字),然後按 Ctrl + Shift + Enter 鍵在一起,您將得到結果,如果數字為質數,則單元格中將顯示“ Prime”,否則,將顯示“ Not Prime”,請參見屏幕截圖:

doc檢查素數1

2。 然後選擇單元格C2,並將填充手柄向下拖動到要應用此公式的單元格上,所有數字都將被識別(如果不是素數)。 看截圖:

doc檢查素數2


箭頭藍色右氣泡 使用用戶定義的功能檢查數字是否為質數

下面 用戶自定義函數 還可以幫助您檢查數字是否為素數,請執行以下操作:

1。 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications 窗口。

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) 放入數字列表旁邊的空白單元格中,然後將填充手柄向下拖動到要包含此公式的單元格中,如果數字為質數,則顯示TRUE,否則為FALSE,請參見屏幕截圖:

doc檢查素數3

最佳辦公生產力工具

熱門特色: 尋找、突出顯示或識別重複項   |  刪除空白行   |  合併列或儲存格而不遺失數據   |   沒有公式的回合 ...
超級查詢: 多條件VLookup    多值VLookup  |   跨多個工作表的 VLookup   |   模糊查詢 ....
高級下拉列表: 快速建立下拉列表   |  依賴下拉列表   |  多選下拉列表 ....
欄目經理: 新增特定數量的列  |  移動列  |  切換隱藏列的可見性狀態  |  比較範圍和列 ...
特色功能: 網格焦點   |  設計圖   |   大方程式酒吧    工作簿和工作表管理器   |  資源庫 (自動文字)   |  日期選擇器   |  合併工作表   |  加密/解密單元格    按清單發送電子郵件   |  超級濾鏡   |   特殊過濾器 (過濾粗體/斜體/刪除線...)...
前 15 個工具集12 文本 工具 (添加文本, 刪除字符,...)   |   50+ 圖表 類型 (甘特圖,...)   |   40+ 實用 公式 (根據生日計算年齡,...)   |   19 插入 工具 (插入二維碼, 從路徑插入圖片,...)   |   12 轉化 工具 (數字到單詞, 貨幣兌換,...)   |   7 合併與拆分 工具 (高級合併行, 分裂細胞,...)   |   ... 和更多

使用 Kutools for Excel 增強您的 Excel 技能,體驗前所未有的效率。 Kutools for Excel 提供了 300 多種進階功能來提高生產力並節省時間。  點擊此處獲取您最需要的功能...

kte選項卡201905


Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
Comments (21)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
DO NOT ENTER THE FORMULAE IN THE CELL. Select the cell then paste the formulae in the formulae bar and press ctrl+shft+Enter. it should put { around the formulae} otherwise its wrong.
This comment was minimized by the moderator on the site
Craig, Thanks - that works! Sorry, I didn't read the instructions sufficiently carefully.
This comment was minimized by the moderator on the site
There is definitely a problem with this equation. I did a direct copy/paste and checked it was a faithful copy but it still has 9, 15, 21, 25, 33, 35 and 39 as primes when they obviously are not. On quick inspection it seems as if factors of 3 and 5 are giving rise to some sort of problem. It is a very complicated formula for a single cell - so much so, I can't work out what it is trying to do. I usually break such things down into multiple cells to make debugging easier (which, I believe is Excel best practice). The function seems to work, though.
This comment was minimized by the moderator on the site
There is definitely a problem with this equation. I did a direct copy/paste and checked it was a faithful copy but it still has 9, 15, 21, 25, 33, 35 and 39 as primes when they obviously are not. On quick inspection it seems as if factors of 3 and 5 are giving rise to some sort of problem. It is a very complicated formula for a single cell - so much so, I can't work out what it is trying to do. I usually break such things down into multiple cells to make debugging easier (which, I believe is Excel best practice).
This comment was minimized by the moderator on the site
Hi.

I am using an italian version of Excel, so the formula does not work and i have an error. Can you help me?

Thanks in advance
This comment was minimized by the moderator on the site
Hi, Gian,
If the formula does not work correctly for you, you can apply the second method-User Defined Function. Please try, hope it can help you!
Thank you!
This comment was minimized by the moderator on the site
Hi skyyang.
If it can be useful for others researchers, I inform you that I have found the solution to my problem here => http://www.riolab.org/index.php?option=com_content&view=article&id=172&Itemid=68

Thank you!
This comment was minimized by the moderator on the site
Yes it worked wen I did Ctrl+Shift+Enter... !! Thank you..:D and Do u mind explaining the algorithm please.
This comment was minimized by the moderator on the site
There's a reference error when you type in numbers that have more than 12 digits.
This comment was minimized by the moderator on the site
Hello,Nathan,
As you said, when the numbers are longer than 12 digits, it will become scientific notation. The formula is not applied for this formatting.
This comment was minimized by the moderator on the site
well 4095 is not a prime. still it gives result as prime no though. its incorrect.
This comment was minimized by the moderator on the site
Hello, vaibhav,
When you pasting above formula, you should press Ctrl + Shift + Enter keys together, not just Enter key, please try it again.
This comment was minimized by the moderator on the site
Your formula is not working. Eg. 1681 is NOT a prime but by formula it is.
=IF(A2=2,"Prime",IF(AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0),"Prime","Not Prime"))
This comment was minimized by the moderator on the site
Hello, Jan,
The above formula is correct, after pastingt the formula into a cell, you should press Ctrl + Shift + Enter keys together, not just Enter key.
Please try it again, thank you!
This comment was minimized by the moderator on the site
Yes, it was that case with CSE. Thanks (it's fixed now).
https://superuser.com/questions/674566/when-to-use-ctrlshiftenter-and-when-to-use-enter-in-excel

Btw Czech variant to:
=IF(A2=2,"Prime",IF(AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0),"Prime","Not Prime"))
is:
=KDYŽ(A2=2;"Prime";KDYŽ(A(MOD(A2;ŘÁDEK(NEPŘÍMÝ.ODKAZ("2:"&ROUNDUP(ODMOCNINA(A2);0))))<>0);"Prime";"Not Prime"))

Compare: https://imgur.com/a/4MgeV
This comment was minimized by the moderator on the site
this is my fastest version Sub generateprimenumbersbetween3() starting_number = 1 'input value here last_number = 30000 'input value here primenumbers = "" For a = starting_number To last_number c = a For b = 2 To c If a Mod b = 0 And c b Then Exit For Else If b = c Then primenumbers = primenumbers & " " & a Exit For Else If Round(a / (b + 1)) + 1 > b Then c = Round(a / (b + 1)) + 1 End If End If End If Next b Next a MsgBox primenumbers End Sub Sub ISPRIME3() number_to_be_checked = 2000000000 'input value here c = number_to_be_checked For b = 2 To c If number_to_be_checked Mod b = 0 And c b Then MsgBox "Not Prime. Divisible by " & b Exit Sub Else If b = c Then MsgBox "Prime" Exit Sub Else If Round(number_to_be_checked / (b + 1)) + 1 > b Then c = Round(number_to_be_checked / (b + 1)) + 1 End If End If End If Next b End Sub
This comment was minimized by the moderator on the site
The user defined function does not seem to work for numbers above ~16777213
This comment was minimized by the moderator on the site
Sub generateprimenumbersbetween() starting_number = 99990 'input value here last_number = 99999 'input value here primenumbers = "" For a = starting_number To last_number For b = 2 To a If a - b * Int(a / b) = 0 And a b Then Exit For Else If a = b Then primenumbers = primenumbers & " " & a End If End If Next b Next a MsgBox primenumbers End Sub Function primenumbersbetween(starting_number, last_number) primenumbers = "" For a = starting_number To last_number For b = 2 To a If a - b * Int(a / b) = 0 And a b Then Exit For Else If a = b Then primenumbers = primenumbers & " " & a End If End If Next b Next a primenumbersbetween = primenumbers End Function 'to check if a number is prime Sub ISPRIME() number_to_be_checked = 102 'input value here For b = 2 To number_to_be_checked If number_to_be_checked - b * Int(number_to_be_checked / b) = 0 And _ number_to_be_checked b Then MsgBox "Not Prime. Divisible by " & b Exit Sub Else If number_to_be_checked = b Then MsgBox "Prime" End If End If Next b End Sub 'to check if a number is prime Function ISPRIME2(number_to_be_checked) For b = 2 To number_to_be_checked If number_to_be_checked - b * Int(number_to_be_checked / b) = 0 And _ number_to_be_checked b Then ISPRIME2 = "Not Prime. Divisible by " & b Exit Function Else If number_to_be_checked = b Then ISPRIME2 = "Prime" End If End If Next b End Function
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations