Note: The other languages of the website are Google-translated. Back to English

Hur kontrollerar jag om antalet är primtal i Excel?

Som vi alla vet är ett primtal ett naturligt tal som bara innehåller två separata naturliga taldelare: en och sig själv. Om du har en lista med siffror i ett kalkylblad, hur kan du kontrollera om siffrorna är primtal?

Kontrollera om ett tal är primtal med matrisformel

Kontrollera om ett tal är primtal med användardefinierad funktion


pil blå höger bubbla Kontrollera om ett tal är primtal med matrisformel

Följande formel kan hjälpa dig att identifiera numret om det är ett primtal eller inte, gör så här:

1. Ange följande formel i en tom cell - C2 till exempel bredvid dina data:

=IF(A2=2,"Prime",IF(AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0),"Prime","Not Prime")) (A2 är cellen innehåller det nummer som du vill kontrollera) och tryck sedan på Ctrl + Skift + Enter knapparna tillsammans, så får du resultatet, om siffran är primär, kommer den att visa "Prime" i cellen, om inte, kommer "Not Prime" att visas, se skärmdump:

doc kontrollera om prim 1

2. Välj sedan cellen C2 och dra påfyllningshanteringen ner till cellerna som du vill använda denna formel, och alla siffror kommer att identifieras om det är primtal eller inte. Se skärmdump:

doc kontrollera om prim 2


pil blå höger bubbla Kontrollera om ett tal är primtal med användardefinierad funktion

Följande Användardefinierad funktion kan också hjälpa dig att kontrollera siffrorna om de är primära eller inte, gör så här:

1. Håll ner ALT + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.

2. Klicka Insert > Modulernaoch klistra in följande kod i Modulfönster.

VBA-kod: Kontrollera om ett tal är primt eller inte:

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. Spara och stäng sedan den här koden, gå tillbaka till kalkylbladet och ange den här formeln: = checkprime (A2) in i en tom cell bredvid din nummerlista och dra sedan påfyllningshanteringen ner till cellerna som du vill innehålla denna formel. Om numret är primtal kommer det att visas SANT, om inte, det visar FALSE, se skärmdump:

doc kontrollera om prim 3


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (21)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag gillar din artikel. Tack så mycket. Mina enkla tester visade att 99 var ett primtal medan 99 inte är som 99 är dividerat med 3 och 33 samt 1 och 99. Kan du berätta vad som är fel med min operation?
Denna kommentar minimerades av moderatoren på webbplatsen
Matrisformeln ovan fungerar inte men den användardefinierade funktionen gör det och var till stor hjälp. Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Matrisformeln fungerar inte men den användardefinierade funktionen gör det och var till stor hjälp. Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Den användardefinierade funktionen verkar inte fungera för siffror över ~16777213
Denna kommentar minimerades av moderatoren på webbplatsen
Sub genereraprimtal mellan() startnummer = 99990 'inmatningsvärde här sista_tal = 99999 'inmatningsvärde här primtal = "" För a = startnummer Till sista_tal För b = 2 Till a Om a - b * Int(a / b) = 0 Och ab Då Exit For Else If a = b Then primenumbers = primenumbers & " " & a End If End If Next b Next a MsgBox primenumbers End Sub Funktion primenumbersbetween(starting_number, last_number) primenumbers = "" För a = start_number To last_number För b = 2 Till a Om a - b * Int(a / b) = 0 Och ab Sedan Avsluta För Annat Om a = b Då primerna = primenrum & " " & a Sluta Om Sluta Om Nästa b Nästa a primenumrarmellan = primerna Slut Funktion 'för att kontrollera om ett tal är primtal Sub ISPRIME() nummer_att_be_kontrolleras = 102 'inmatningsvärde här För b = 2 Till siffra_att_kontrolleras Om siffra_ska_kontrolleras - b * Int(antal_att_kontrolleras /b) = 0 Och _tal_att_kontrolleras b Sedan MsgBox "Inte primtalsruta. Delas av "Inte primtal". Sub Else If number_to_be_checked = b Then MsgBox "Prime" End If End If Next b End Sub 'för att kontrollera om ett tal är primtal Funktion 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. Delbar med " & b Avsluta funktion Else If number_to_be_checked = b Then ISPRIME2 = "Prime" End If End If Next b End Function
Denna kommentar minimerades av moderatoren på webbplatsen
detta är min snabbaste version Sub genereraprimnumbersbetween3() startnummer = 1 'inmatningsvärde här sista_tal = 30000 'inmatningsvärde här primtal = "" För a = startnummer Till sista_tal c = a För b = 2 Till c Om a Mod b = 0 Och cb Avsluta för annat Om b = c Då primer = primer & " " & a Exit For Else If Round(a / (b + 1)) + 1 > b Då 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 'indatavärde här c = number_to_be_checked For b = 2 To c If number_to_be_checked Mod b = 0 Och cb Sedan MsgBox "Not Prime. Delbart med " & b Exitable 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
Denna kommentar minimerades av moderatoren på webbplatsen
Din formel fungerar inte. T.ex. 1681 är INTE ett primtal utan enligt formel är det det.
=IF(A2=2,"Prime",IF(AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0),"Prime","Not Prime"))
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Jan,
Ovanstående formel är korrekt, efter att ha klistrat in formeln i en cell, bör du trycka på Ctrl + Shift + Enter-tangenterna tillsammans, inte bara Enter-tangenten.
Försök igen, tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Ja, det var så med CSE. Tack (det är fixat nu).
https://superuser.com/questions/674566/when-to-use-ctrlshiftenter-and-when-to-use-enter-in-excel

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

Jämföra: https://imgur.com/a/4MgeV
Denna kommentar minimerades av moderatoren på webbplatsen
väl 4095 är inte ett primtal. ändå ger det resultat som prime no dock. det är felaktigt.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej vaibhav,
När du klistrar in formeln ovan bör du trycka på Ctrl + Skift + Enter-tangenterna samtidigt, inte bara Enter-tangenten, försök igen.
Denna kommentar minimerades av moderatoren på webbplatsen
Det finns ett referensfel när du skriver in siffror som har fler än 12 siffror.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Nathan,
Som du sa, när siffrorna är längre än 12 siffror kommer det att bli vetenskaplig notation. Formeln används inte för denna formatering.
Denna kommentar minimerades av moderatoren på webbplatsen
Ja det fungerade när jag gjorde Ctrl+Skift+Enter... !! Tack..:D och har du något emot att förklara algoritmen tack.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej.

Jag använder en italiensk version av Excel, så formeln fungerar inte och jag har ett fel. Kan du hjälpa mig?

Tack på förhand
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Gian,
Om formeln inte fungerar korrekt för dig kan du använda den andra metoden - Användardefinierad funktion. Försök gärna, hoppas det kan hjälpa dig!
Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej skyyang.
Om det kan vara användbart för andra forskare så informerar jag om att jag har hittat lösningen på mitt problem här => http://www.riolab.org/index.php?option=com_content&view=article&id=172&Itemid=68

Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Det finns definitivt ett problem med denna ekvation. Jag gjorde en direkt kopiering/klistra in och kontrollerade att det var en trogen kopia men den har fortfarande 9, 15, 21, 25, 33, 35 och 39 som primtal när de uppenbarligen inte är det. Vid en snabb inspektion verkar det som om faktorerna 3 och 5 ger upphov till något slags problem. Det är en mycket komplicerad formel för en enda cell - så mycket att jag inte kan räkna ut vad den försöker göra. Jag brukar dela upp sådana saker i flera celler för att göra felsökning enklare (vilket jag tror är Excel bästa praxis).
Denna kommentar minimerades av moderatoren på webbplatsen
Det finns definitivt ett problem med denna ekvation. Jag gjorde en direkt kopiering/klistra in och kontrollerade att det var en trogen kopia men den har fortfarande 9, 15, 21, 25, 33, 35 och 39 som primtal när de uppenbarligen inte är det. Vid en snabb inspektion verkar det som om faktorerna 3 och 5 ger upphov till något slags problem. Det är en mycket komplicerad formel för en enda cell - så mycket att jag inte kan räkna ut vad den försöker göra. Jag brukar dela upp sådana saker i flera celler för att göra felsökning enklare (vilket jag tror är Excel bästa praxis). Funktionen verkar dock fungera.
Denna kommentar minimerades av moderatoren på webbplatsen
SKRIV INTE IN FORMLERNA I CELLEN. Markera cellen och klistra in formlerna i formelfältet och tryck på ctrl+shft+Enter. den ska sätta { runt formlerna} annars är det fel.
Denna kommentar minimerades av moderatoren på webbplatsen
Craig, tack - det fungerar! Tyvärr, jag läste inte instruktionerna tillräckligt noggrant.
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL