Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

265
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!