Primtal

Primtal

Hvad er primtal?

EN primtal defineres som et naturligt tal større end 1 og er kun delelig med 1 og sig selv.

Primtallet er med andre ord et positivt heltal større end 1, der har præcis to faktorer, 1 og selve tallet. De første par primtal er 2, 3, 5, 7, 11, 13, 17, 19, 23. . .

Bemærk: 1 er hverken prime eller sammensat. De resterende tal, bortset fra 1, er klassificeret som primtal og sammensatte tal.



Primtal

Nogle interessante fakta om primtal:

  • Bortset fra 2, som er den mindste primtal og det eneste lige primtal, alle primtal er ulige tal.
  • Hvert primtal kan repræsenteres i form af 6n + 1 eller 6n – 1 undtagen primtallene 2 og 3 , hvor n er ethvert naturligt tal.
  • 2 og 3 er kun to på hinanden følgende naturlige tal, der er primtal.
  • Goldbachs formodning: Hvert lige heltal større end 2 kan udtrykkes som summen af ​​to primtal.
  • Wilsons sætning : Wilsons sætning siger, at et naturligt tal p> 1 er et primtal, hvis og kun hvis

(p – 1) ! ≡ -1 mod p
ELLER,
(s – 1) ! ≡ (p-1) mod s

-en n-1 ≡ 1 (mod n)
ELLER,
-en n-1 % n = 1

  • Primtalssætning : Sandsynligheden for, at et givet, tilfældigt valgt tal n er primtal, er omvendt proportional med dets antal cifre eller med logaritmen af ​​n.
  • Lemoines formodning : Ethvert ulige heltal større end 5 kan udtrykkes som summen af ​​et ulige primtal (alle primtal bortset fra 2 er ulige) og et lige semiprimtal. Et semiprimtal er et produkt af to primtal. Dette kaldes Lemoines formodning.

Primtals egenskaber:

  • Hvert tal større end 1 kan divideres med mindst ét ​​primtal.
  • Hvert lige positivt heltal større end 2 kan udtrykkes som summen af ​​to primtal.
  • Bortset fra 2 er alle andre primtal ulige. Med andre ord kan vi sige, at 2 er det eneste lige primtal.
  • To primtal er altid coprime til hinanden.
  • Hvert sammensat tal kan indregnes i primfaktorer, og hver for sig er alle disse unikke.

Primtal og Co-primtal:

Det er vigtigt at skelne mellem Primtal og co-primtal . Nedenfor er anført forskellene mellem primtal og co-primtal.

  • Coprimtal betragtes altid som et par, hvorimod et primtal er et enkelt tal.
  • Co-primtal er tal, der ikke har nogen fælles faktor undtagen 1. Derimod har primtal ikke en sådan betingelse.
  • Et co-primtal kan enten være primtal eller sammensat, men dets største fælles faktor (GCF) skal altid være 1. I modsætning til sammensatte tal har primtal kun to faktorer, 1 og selve tallet.
  • Eksempel på co-prime: 13 og 15 er co-prime. Faktorerne 13 er 1 og 13 og faktorerne 15 er 1, 3 og 5. Vi kan se, at de kun har 1 som deres fælles faktor, derfor er de coprimtal.
  • Eksempel på prime: Et par eksempler på primtal er 2, 3, 5, 7 og 11 osv.

Hvordan kontrollerer man, om et tal er prime eller ej?

Naiv tilgang: Den naive tilgang er at

Gentag fra 2 til (n-1), og kontroller, om et tal i dette interval deler sig n . Hvis tallet deler sig n , så er det ikke et primtal.

Tidskompleksitet: PÅ)
Hjælpeplads: O(1)

Naiv tilgang (rekursiv): Rekursion kan også bruges til at kontrollere, om et tal mellem 2 til n – 1 deler n. Hvis vi finder et tal, der deler, returnerer vi falsk.

Nedenfor er implementeringen af ​​ovenstående idé:

C++




// C++ program to check whether a number> // is prime or not using recursion> #include> using> namespace> std;> > // function check whether a number> // is prime or not> bool> isPrime(> int> n)> {> > static> int> i = 2;> > > // corner cases> > if> (n == 0 || n == 1) {> > return> false> ;> > }> > > // Checking Prime> > if> (n == i)> > return> true> ;> > > // base cases> > if> (n % i == 0) {> > return> false> ;> > }> > i++;> > return> isPrime(n);> }> > // Driver Code> int> main()> {> > > isPrime(35) ? cout < <> ' true '> : cout < <> ' false '> ;> > return> 0;> }> > // This code is contributed by yashbeersingh42>

Java




// Java program to check whether a number> // is prime or not using recursion> import> java.io.*;> > class> GFG {> > > static> int> i => 2> ;> > > // Function check whether a number> > // is prime or not> > public> static> boolean> isPrime(> int> n)> > {> > > // Corner cases> > if> (n ==> 0> || n ==> 1> ) {> > return> false> ;> > }> > > // Checking Prime> > if> (n == i)> > return> true> ;> > > // Base cases> > if> (n % i ==> 0> ) {> > return> false> ;> > }> > i++;> > return> isPrime(n);> > }> > > // Driver Code> > public> static> void> main(String[] args)> > {> > if> (isPrime(> 35> )) {> > System.out.println(> 'true'> );> > }> > else> {> > System.out.println(> 'false'> );> > }> > }> }> > // This code is contributed by divyeshrabadiya07>

Python3




# Python3 program to check whether a number> # is prime or not using recursion> > # Function check whether a number> # is prime or not> > > def> isPrime(n, i):> > > # Corner cases> > if> (n> => => 0> or> n> => => 1> ):> > return> False> > > # Checking Prime> > if> (n> => => i):> > return> True> > > # Base cases> > if> (n> %> i> => => 0> ):> > return> False> > > i> +> => 1> > > return> isPrime(n, i)> > > # Driver Code> if> (isPrime(> 35> ,> 2> )):> > print> (> 'true'> )> else> :> > print> (> 'false'> )> > # This code is contributed by bunnyram19>

C#




// C# program to check whether a number> // is prime or not using recursion> using> System;> class> GFG {> > > static> int> i = 2;> > > // function check whether a number> > // is prime or not> > static> bool> isPrime(> int> n)> > {> > > // corner cases> > if> (n == 0 || n == 1) {> > return> false> ;> > }> > > // Checking Prime> > if> (n == i)> > return> true> ;> > > // base cases> > if> (n % i == 0) {> > return> false> ;> > }> > i++;> > return> isPrime(n);> > }> > > static> void> Main()> > {> > if> (isPrime(35)) {> > Console.WriteLine(> 'true'> );> > }> > else> {> > Console.WriteLine(> 'false'> );> > }> > }> }> > // This code is contributed by divyesh072019>

Javascript




> > // JavaScript program to check whether a number> > // is prime or not using recursion> > > // function check whether a number> > // is prime or not> > var> i = 2;> > > function> isPrime(n) {> > > // corner cases> > if> (n == 0 || n == 1) {> > return> false> ;> > }> > > // Checking Prime> > if> (n == i)> return> true> ;> > > // base cases> > if> (n % i == 0) {> > return> false> ;> > }> > i++;> > return> isPrime(n);> > }> > > // Driver Code> > > isPrime(35) ? document.write(> ' true '> ) : document.write(> ' false '> );> > > // This code is contributed by rdtank.> > >

Produktion

 false 

Tidskompleksitet: PÅ)
Hjælpeplads: O(N), hvis vi betragter rekursionsstakken. Ellers er det O(1).

Effektiv tilgang: En effektiv løsning er at:

Gentag gennem alle tal fra 2 til kvadratrod af n og for hvert tal tjek om det deler n [fordi hvis et tal er udtrykt som n = xy og enhver af x eller y er større end roden af ​​n, den anden skal være mindre end rodværdien]. Hvis vi finder et tal, der deler, returnerer vi falsk.

Nedenfor er implementeringen:

C++14




// A school method based C++ program to> // check if a number is prime> #include> using> namespace> std;> > // Function check whether a number> // is prime or not> bool> isPrime(> int> n)> {> > // Corner case> > if> (n <= 1)> > return> false> ;> > > // Check from 2 to square root of n> > for> (> int> i = 2; i <=> sqrt> (n); i++)> > if> (n % i == 0)> > return> false> ;> > > return> true> ;> }> > // Driver Code> int> main()> {> > isPrime(11) ? cout < <> 'true '> : cout < <> 'false '> ;> > return> 0;> }>

Java




// A school method based Java program to> // check if a number is prime> import> java.lang.*;> import> java.util.*;> > class> GFG {> > > // Check for number prime or not> > static> boolean> isPrime(> int> n)> > {> > > // Check if number is less than> > // equal to 1> > if> (n <=> 1> )> > return> false> ;> > > // Check if number is 2> > else> if> (n ==> 2> )> > return> true> ;> > > // Check if n is a multiple of 2> > else> if> (n %> 2> ==> 0> )> > return> false> ;> > > // If not, then just check the odds> > for> (> int> i => 3> ; i <= Math.sqrt(n); i +=> 2> ) {> > if> (n % i ==> 0> )> > return> false> ;> > }> > return> true> ;> > }> > > // Driver code> > public> static> void> main(String[] args)> > {> > if> (isPrime(> 19> ))> > System.out.println(> 'true'> );> > > else> > System.out.println(> 'false'> );> > }> }> > // This code is contributed by Ronak Bhensdadia>

Python3




# A school method based Python3 program> # to check if a number is prime> > > # import sqrt from math module> from> math> import> sqrt> > > > # Function check whether a number> # is prime or not> def> isPrime(n):> > > # Corner case> > if> (n <> => 1> ):> > return> False> > > # Check from 2 to sqrt(n)> > for> i> in> range> (> 2> ,> int> (sqrt(n))> +> 1> ):> > if> (n> %> i> => => 0> ):> > return> False> > > return> True> > > # Driver Code> if> __name__> => => '__main__'> :> > if> isPrime(> 11> ):> > print> (> 'true'> )> > else> :> > print> (> 'false'> )> > # This code is contributed by Sachin Bisht>

C#




// A school method based C# program to> // check if a number is prime> using> System;> > class> GFG {> > > // Function check whether a> > // number is prime or not> > static> bool> isPrime(> int> n)> > {> > // Corner case> > if> (n <= 1)> > return> false> ;> > > // Check from 2 to sqrt(n)> > for> (> int> i = 2; i <= Math.Sqrt(n); i++)> > if> (n % i == 0)> > return> false> ;> > > return> true> ;> > }> > > // Driver Code> > static> void> Main()> > {> > if> (isPrime(11))> > Console.Write(> 'true'> );> > > else> > Console.Write(> 'false'> );> > }> }> > // This code is contributed by Sam007>

Javascript




// A school method based Javascript program to> // check if a number is prime> > > // Function check whether a number> // is prime or not> function> isPrime(n)> {> > // Corner case> > if> (n <= 1)> > return> false> ;> > > // Check from 2 to n-1> > for> (let i = 2; i if (n % i == 0) return false; return true; } // Driver Code isPrime(11) ? console.log(' true') : console.log(' false'); // This code is contributed by Mayank Tyagi>

PHP




// A school method based PHP program to // check if a number is prime // Function check whether a number // is prime or not function isPrime($n) { // Corner case if ($n <= 1) return false; // Check from 2 to n-1 for ($i = 2; $i <$n; $i++) if ($n % $i == 0) return false; return true; } // Driver Code if(isPrime(11)) echo('true'); else echo('false'); // This code is contributed by Ajit. ?>>

Produktion

true 

Tidskompleksitet: O(sqrt(n))
Hjælpeplads: O(1)

En anden effektiv tilgang: For at kontrollere, om tallet er primtal eller ej, følg nedenstående idé:

Vi vil beskæftige os med nogle få tal såsom 1, 2, 3 og de tal, der er delelige med 2 og 3 i separate tilfælde og for resterende tal. Iterer fra 5 til sqrt(n) og kontroller for hver iteration, om (den værdi) eller (den værdi + 2) deler n eller ej, og forøg værdien med 6 [fordi ethvert primtal kan udtrykkes som 6n+1 eller 6n-1 ]. Hvis vi finder et tal, der deler, returnerer vi falsk.

Nedenfor er implementeringen af ​​ovenstående idé:

C++




// A school method based C++ program to> // check if a number is prime> #include> using> namespace> std;> > // Function check whether a number> // is prime or not> bool> isPrime(> int> n)> > > // Driver Code> int> main()> {> > isPrime(11) ? cout < <> 'true '> : cout < <> 'false '> ;> > return> 0;> }> // This code is contributed by Suruchi kumari>

C




// A school method based C program to> // check if a number is prime> #include> #include> > // Function check whether a number> // is prime or not> int> isPrime(> int> n)> n % 3 == 0)> > return> 0;> > // Check from 5 to square root of n> > // Iterate i by (i+6)> > for> (> int> i = 5; i * i <= n; i = i + 6)> > if> (n % i == 0> > // Driver Code> int> main()> {> > if> (isPrime(11) == 1)> > printf> (> 'true '> );> > else> > printf> (> 'false '> );> > return> 0;> }> // This code is contributed by Suruchi Kumari>

Java




// Java program to check whether a number> import> java.lang.*;> import> java.util.*;> > class> GFG {> > > // Function check whether a number> > // is prime or not> > public> static> boolean> isPrime(> int> n)> > > > if> (n <=> 1> )> > return> false> ;> > > // Check if n=2 or n=3> > if> (n ==> 2> > > > // Driver Code> > public> static> void> main(String[] args)> > {> > if> (isPrime(> 11> )) {> > System.out.println(> 'true'> );> > }> > else> {> > System.out.println(> 'false'> );> > }> > }> }> > // This code is contributed by Sayan Chatterjee>

Python3




import> math> > def> is_prime(n:> int> )> -> >> bool> :> > > # Check if n=1 or n=0> > if> n <> => 1> :> > return> 'false'> > > # Check if n=2 or n=3> > if> n> => => 2> or> n> => => 3> :> > return> 'true'> > > # Check whether n is divisible by 2 or 3> > if> n> %> 2> => => 0> or> n> %> 3> => => 0> :> > return> 'false'> > > # Check from 5 to square root of n> > # Iterate i by (i+6)> > for> i> in> range> (> 5> ,> int> (math.sqrt(n))> +> 1> ,> 6> ):> > if> n> %> i> => => 0> or> n> %> (i> +> 2> )> => => 0> :> > return> 'false'> > > return> 'true'> > if> __name__> => => '__main__'> :> > print> (is_prime(> 11> ))>

C#




// C# program to check whether a number> using> System;> class> GFG {> > > // Function check whether a number> > // is prime or not> > public> static> bool> isPrime(> int> n)> > > > > // Driver Code> > public> static> void> Main(String[] args)> > {> > if> (isPrime(11)) {> > Console.WriteLine(> 'true'> );> > }> > else> {> > Console.WriteLine(> 'false'> );> > }> > }> }> > // This code is contributed by Abhijeet> // Kumar(abhijeet_19403)>

Javascript




// A school method based JS program to> // check if a number is prime> > > // Function check whether a number> // is prime or not> function> isPrime(n)> n % (i + 2) == 0)> > return> false> ;> > > return> true> ;> > > // Driver Code> isPrime(11) ? console.log(> 'true'> ) : console.log(> 'false'> );> > > // This code is contributed by phasing17>

Produktion

true 

Tidskompleksitet: O(sqrt(n))
Hjælpeplads: O(1)

Effektive løsninger

  • Primalitetstest | Sæt 1 (Introduktion og skolemetode)
  • Primalitetstest | Sæt 2 (Fermat-metode)
  • Primalitetstest | Sæt 3 (Miller-Rabin)
  • Primalitetstest | Sæt 4 (Solovay-Strassen)
  • Lucas Primality Test

Algoritmer til at finde alle primtal mindre end N.

  • Sigte af Eratosthenes
  • Sigte af Eratosthenes i 0(n) tidskompleksitet
  • Segmenteret sigte
  • Sigte af Sundaram
  • Bitvis sigte
  • Seneste artikler om Sieve!

Flere problemer relateret til primtal

  • Find to forskellige primtal med -en givet produkt
  • Udskriv alle primtal mindre end eller lig med N
  • Rekursivt program for primtal
  • Find to primtal med -en givet sum
  • Find det højest forekommende ciffer i primtal i et interval
  • Prime Factorization ved hjælp af Sieve O(log n) til flere forespørgsler
  • Program til at udskrive alle primfaktorer af et givet tal
  • Mindste primfaktor for tal indtil n
  • Primære faktorer for LCM af array-elementer – techcodeview.com
  • Program for Goldbachs formodning
  • Primtal og Fibonacci
  • Komposit nummer
  • Seneste artikler om primtal!


Top Artikler

Kategori

Interessante Artikler