Python-ohjelma alkuluvun tarkistamiseen

Kun positiivinen kokonaisluku N on annettu, tehtävänä on kirjoittaa Python-ohjelma tarkistaaksesi, onko luku Prime tai ei sisällä Python .

Esimerkkejä:

  Input:   n = 11   Output:   True   Input:   n = 1   Output:   False   Explanation:   A prime number is a natural number greater than 1 that  has no positive divisors other than 1 and itself.  The first few prime numbers are {2, 3, 5, 7, 11, ….}. 

Python-ohjelma alkuluvun tarkistamiseksi

Ajatuksena tämän ongelman ratkaisemiseksi on iteroida kaikki luvut alkaen 2:sta (N/2) käyttämällä silmukalle ja tarkista jokaisen luvun kohdalla, jakaako se N. Jos löydämme minkä tahansa luvun, joka jakaa, palautetaan epätosi. Jos emme löytäneet yhtään lukua 2:n ja N/2:n väliltä, ​​joka jakaa N:n, se tarkoittaa, että N on alkuluku ja palautamme True.

Python 3
num = 11 # If given number is greater than 1 if num>1: # Toista 2:sta n // 2:een i:lle alueella(2, (num//2)+1): # Jos numero on jaollinen millä tahansa luvulla välillä # 2 ja n / 2, se ei ole alkuluku, jos ( numero % i) == 0: print(numero, 'ei ole alkuluku') break else: print(numero, 'on alkuluku') else: print(numero, 'ei alkuluku numero')>>   
Lähtö
11 is a prime number 

Aika monimutkaisuus : Päällä)
Aputila: O(1)

Etsi alkulukuja lippumuuttujalla

Sen sijaan, että tarkistamme n asti, voimme tarkistaa asti √n, koska n:n suuremman kertoimen on oltava jo tarkistetun pienemmän tekijän kerrannainen. Katsotaan nyt ensimmäisen optimointimenetelmän koodia (eli tarkistusta √n asti)

Python 3
from math import sqrt # n is the number to be check whether it is prime or not n = 1 # this flag maintains status whether the n is prime or not prime_flag = 0 if(n>1): i:lle alueella(2, int(sqrt(n)) + 1): if (n % i == 0): ensisijainen_lippu = 1 tauko if (prime_lippu == 0): print('True' ) else: print('False') else: print('False') 

Lähtö Aika monimutkaisuus :O(sqrt(n))
Aputila: O(1)

Tarkista alkuluvut käyttämällä rekursiota

Voimme myös löytää luvun alkuluvun tai ei käytä rekursio . Voimme käyttää menetelmässä 2 esitettyä täsmällistä logiikkaa, mutta rekursiivisella tavalla.

Python 3
from math import sqrt def Prime(number,itr): #prime function to check given number prime or not if itr == 1: #base condition return True if number % itr == 0: #if given number divided by itr or not return False if Prime(number,itr-1) == False: #Recursive function Call return False return True num = 13 itr = int(sqrt(num)+1) print(Prime(num,itr)) 

Lähtö
True 

Aika monimutkaisuus: O(sqrt(n))
Aputila :O(sqrt(n))

Tarkista Prime Trial Division -menetelmä

Python 3
def is_prime_trial_division(n): # Check if the number is less than # or equal to 1, return False if it is if n  <= 1: return False # Loop through all numbers from 2 to # the square root of n (rounded down to the nearest integer) for i in range(2, int(n**0.5)+1): # If n is divisible by any of these numbers, return False if n % i == 0: return False # If n is not divisible by any of these numbers, return True return True # Test the function with n = 11 print(is_prime_trial_division(11)) 

Lähtö
True 

Aika monimutkaisuus: O(sqrt(n))
Aputila: O(sqrt(n))

Suositeltu artikkeli - Eri menetelmien analyysi alkuluvun löytämiseksi Pythonissa

Python-ohjelma alkuluvun tarkistamiseen. Käytetään while-silmukkaa jaellisuuden tarkistamiseen

Alusta muuttuja i 2:ksi. Kun i neliö on pienempi tai yhtä suuri kuin n, tarkista, onko n jaollinen i:llä. Jos n on jaollinen i:llä, palauttaa False. Muussa tapauksessa lisää i:tä yhdellä. Jos silmukka päättyy löytämättä jakajaa, palauta True.

Python 3
import math def is_prime(n): if n  < 2: return False i = 2 while i*i  <= n: if n % i == 0: return False i += 1 return True print(is_prime(11)) # True print(is_prime(1)) # False 

Lähtö
True False 

Aika monimutkaisuus: O(sqrt(n))
Aputila: O(1)

Python-ohjelma alkuluvun tarkistamiseen matematiikkamoduulilla

Koodi toteuttaa peruslähestymistavan sen tarkistamiseksi, onko luku alkuluku vai ei, kulkemalla kaikki luvut 2:sta sqrt(n)+1:een ja tarkistamalla, onko n jaollinen millä tahansa näistä luvuista.

Python 3
import math def is_prime(n): if n  <= 1: return False for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: return False return True n = 11 print(is_prime(n)) 

Lähtö
True 

Aika monimutkaisuus: O(sqrt(n))
Koodin aikamonimutkaisuus on O(sqrt(n)), koska käymme läpi kaikki luvut välillä 2 - sqrt(n)+1 tarkistaaksemme, onko n jaollinen millä tahansa niistä.

Aputila: O(1)
Koodin tilamonimutkaisuus on O(1), koska käytämme vain vakiomäärää muistia syötteen numeron n ja silmukkamuuttujien tallentamiseen.

Python-ohjelma alkuluvun tarkistamiseen käyttämällä sympy.isprime()-menetelmää

Sympy-moduulissa voimme testata, onko annettu luku n alkuluku vai ei, käyttämällä sympy.isprime()-funktiota. n:lle <2 64 vastaus on lopullinen; suuremmilla n-arvoilla on pieni todennäköisyys olla todella pseudoalkulukuja.

HUOM.: Negatiivisia lukuja (esim. -13) ei pidetä alkuluvuina.

Python 3
# Python program to check prime number # using sympy.isprime() method # importing sympy module from sympy import * # calling isprime function on different numbers geek1 = isprime(30) geek2 = isprime(13) geek3 = isprime(2) print(geek1) # check for 30 is prime or not print(geek2) # check for 13 is prime or not print(geek3) # check for 2 is prime or not # This code is contributed by Susobhan Akhuli 

Lähtö

False True True 

Aika monimutkaisuus: O(sqrt(n)), jossa n on syötenumero.
Aputila: O(1)