Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

260
Visualizações
Números primos entre dos números dados en la comparación de Julia y Python

Consulte el código de Python para encontrar números primos entre dos números inferiores y superiores dados:

 lower = 3 upper = 15 print("Prime numbers between", lower, "and", upper, "are:") for num in range(lower, upper + 1): for i in range(2, num): if (num % i) == 0: break else: print(num)

Salida de Python:

 Prime numbers between 3 and 15 are: 3 5 7 11 13

Un código casi similar en Julia da una salida incorrecta. Vea el código de Julia a continuación:

 lower = 3 upper = 15 println("Prime numbers between ", lower, " and “, upper, " are:”) for num in lower:upper for i in 2: num-1 if (num % i) == 0 break else println(num) break end end end

Salida Julia:

 Prime numbers between 3 and 15 are: 3 5 7 9 11 13 15

Claramente, 9 y 15 no son números primos. ¿Por qué el código de Python da una salida correcta y el código de Julia no? ¿Alguna forma de solucionarlo usando la misma lógica algorítmica?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Aquí está el código que usaría que mantiene la misma lógica algorítmica según su solicitud (escribo este código de esta manera ya que la condición dentro del ciclo no solo es eficiente sino que también se lee naturalmente: "cualquiera de los números del rango 2:num-1 divide num o imprime num "):

 julia> lower = 3 3 julia> upper = 15 15 julia> println("Prime numbers between $lower and $upper are:") Prime numbers between 3 and 15 are: julia> for num in lower:upper any(i -> num % i == 0, 2:num-1) || println(num) end 3 5 7 11 13

Según los comentarios a su pregunta en Julia, no tiene una cláusula else en for loop. Sin embargo, el uso de any función mantiene la misma lógica que su código, ya que es una función de circuito corto (logra el mismo efecto que la break en su ciclo for).

Si algo no está claro en mi código, por favor hágamelo saber.


EDITAR:

Reescribiré el código para explicar cómo funciona.

Primero el || parte. Utiliza el comportamiento de cortocircuito de || operador. Entonces, en el primer nivel, esto se puede reescribir como:

 julia> lower = 3 3 julia> upper = 15 15 julia> println("Prime numbers between $lower and $upper are:") Prime numbers between 3 and 15 are: julia> for num in lower:upper iscomposite = any(i -> num % i == 0, 2:num-1) if !iscomposite println(num) end end 3 5 7 11 13

Ahora, como se comentó, any también está haciendo un circuito corto, por lo que es equivalente a escribir:

 julia> lower = 3 3 julia> upper = 15 15 julia> println("Prime numbers between $lower and $upper are:") Prime numbers between 3 and 15 are: julia> for num in lower:upper iscomposite = false for i in 2:num-1 if num % i == 0 iscomposite = true break end end if !iscomposite println(num) end end 3 5 7 11 13
over 4 years ago · Santiago Trujillo Relatório

0

Su código de Julia parece imprimirse en el interior y romper el ciclo de verificación de factores en lugar de esperar a que se verifiquen todos los factores. (No conozco a Julia, pero esa parece ser una diferencia obvia).

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda