Python - For y While, nuu

   
Vista:

For y While, nuu

Publicado por Eduar shock.209@hotmail.com (2 intervenciones) el 18/03/2018 17:29:55
Hola,quisiera un poco de ayuda en este ejercicio.

Escriba un programa que identifique si un número es primo haciendo la comprobación de sus divisores; recuerde que un número es primo si tiene sólo 2 divisores: el propio número y el 1.
Tenga en cuenta que basta con comprobar hasta la raíz cuadrada del número, puesto que si un número tiene un divisor mayor que su raíz cuadrada también lo
tendrá menor que su raíz cuadrada. Además, no es necesario saber cuántos divisores tiene un número para saber que es primo, ya que, al encontrar un divisor diferente a los mencionados, sabremos que el número no es primo.
Escriba este programa, con base en las indicaciones anteriores para que interrumpa la búsqueda al hallar un divisor diferente a 1 o al mismo número, mediante el uso de bucles while.
A continuación, se muestran dos ejemplos de ejecución del programa:
3
La imagen es como deben apararecer los datos de salida, hasta el momento he hecho esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def esPrimo(n):
    contador=0
    verificador=False
    for i in range(1,numero+1):
        if(numero%i)==0:
            #print("{0} es divisor de {1}", format(i, numero)
            contador=contador+1
        if contador >=3:
            verificador=True
            break
    if contador==2 or verificador==False:
        print("El numero", numero,"es primo.")
    else: print("El numero", numero, "NO es primo. Un divisor es: ")
    return not (verificador)
 
numero=int(input("Digite el numero a evaluar: "))
esPrimo(numero)

Lo que necesitaria es el agregar una manera para que tambien me arroje el divosr que es la otra cosa que me pidesn, cualquier ayuda sera agradecida.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

For y While, nuu

Publicado por dario (41 intervenciones) el 19/03/2018 15:07:37
Te dejo esto por si te sirve.
Salu2.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from math import sqrt
 
def esPrimo(n):
  x = int(sqrt(n))
  c = 0
  for i in range(1,x):
    if n % i == 0:
      c += 1
  if c == 1:
    return True
 
#Main
numero = int(input('Por favor ingrese el numero a evaluar:'))
 
if esPrimo(numero):
  print('El numero %d es primo' %numero)
else:
  for i in range(2,numero):
    if numero % i == 0:
      print('El numero %d no es primo. Un divisor es %d' %(numero,i))
      break
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar