Donat un nombre enter positiu N, la tasca és escriure un programa Python per comprovar si el nombre és Primer o no dins Python .
Exemples:
declaració bash if
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, ….}.>Programa Python per comprovar el nombre primer
La idea per resoldre aquest problema és repetir tots els nombres que comencen del 2 a (N/2) utilitzant un per bucle i per a cada nombre comproveu si divideix N. Si trobem algun nombre que divideix, tornem fals. Si no hem trobat cap nombre entre 2 i N/2 que divideixi N, vol dir que N és primer i retornarem Cert.
Python 3 num = 11 # If given number is greater than 1 if num>1: # Itereu de 2 a n // 2 per a i en el rang (2, (núm//2)+1): # Si num és divisible per qualsevol nombre entre # 2 i n / 2, no és primer si ( num % i) == 0: print(número, 'no és un nombre primer') break else: print(número, 'és un nombre primer') else: print(número, 'no és primer número')>>>
Sortida 11 is a prime number>
Complexitat temporal : O(n)
Espai auxiliar: O(1)
Trobeu nombres primers amb una variable de bandera
En lloc de comprovar fins a n, podem comprovar fins a √n perquè un factor més gran de n ha de ser un múltiple d'un factor més petit que ja s'ha verificat. Ara vegem el codi del primer mètode d'optimització (és a dir, comprovant fins a √n)
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): per a i dins l'interval (2, int(sqrt(n)) + 1): if (n % i == 0): bandera_primera = 1 break if (bandera_primera == 0): print('Veritable' ) else: print('False') else: print('False')> Sortida
Espai auxiliar: O(1)
Comproveu els nombres primers amb recursió
També podem trobar el nombre primer o no utilitzant recursivitat . Podem utilitzar la lògica exacta que es mostra al mètode 2 però de manera recursiva.
j e s tPython 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))>
Sortida
True>
Complexitat temporal: O(sqrt(n))
Espai auxiliar :O(sqrt(n))
Comproveu el mètode de la divisió de prova principal
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))>
Sortida
True>
Complexitat temporal: O(sqrt(n))
Espai auxiliar: O(sqrt(n))
Article recomanat - Anàlisi de diferents mètodes per trobar nombre primer en Python
Programa Python per comprovar el nombre primer Utilitzant un bucle while per comprovar la divisibilitat
Inicialitzeu una variable i a 2, mentre que i quadrat és menor o igual que n, comproveu si n és divisible per i. Si n és divisible per i, retorna Fals. En cas contrari, incrementeu i en 1. Si el bucle acaba sense trobar un divisor, retorneu True.
java llarg a cadenaPython 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>
Sortida
True False>
Complexitat temporal: O(sqrt(n))
Espai auxiliar: O(1)
Programa Python per comprovar el nombre primer mitjançant el mòdul matemàtic
El codi implementa un enfocament bàsic per comprovar si un nombre és primer o no, travessant tots els nombres de 2 a sqrt(n)+1 i comprovant si n és divisible per algun d'aquests nombres.
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))>
Sortida
True>
Complexitat temporal: O(sqrt(n))
La complexitat temporal del codi és O(sqrt(n)) perquè recorrem tots els nombres en el rang de 2 a sqrt(n)+1 per comprovar si n és divisible per algun d'ells.
Espai auxiliar: O(1)
La complexitat espacial del codi és O(1) perquè només estem utilitzant una quantitat constant de memòria per emmagatzemar el número d'entrada n i les variables de bucle.
Programa Python per comprovar el nombre primer mitjançant el mètode sympy.isprime().
Al mòdul sympy, podem comprovar si un nombre donat n és primer o no utilitzant la funció sympy.isprime(). Per a n <264la resposta és definitiva; els n valors més grans tenen una petita probabilitat de ser realment pseudoprims.
classe abstracta vs interfície
Python 3N.B.: Els nombres negatius (per exemple, -13) no es consideren primers.
# 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>
Sortida
False True True>
Complexitat temporal: O(sqrt(n)), on n és el nombre d'entrada.
Espai auxiliar: O(1)