jukaukor

Taxicabnumber_UInt128.jl

Jun 15th, 2020
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. # Ramanujanista ja G.H. Hardysta kertovan elokuvan " The Man Who Knew Infinity" innoittamana
  2. # tein Julia ohjelman Taxicabnumber.jl
  3. # Tässä optimoiot versio, jokaKäyttää 128-bittisia UInt128-tyyppisiä kokonaislukuja
  4. # ja jossa muuttujien tyypit on ilmoitettu Julian kääntäjän optimointia varten
  5. # Tällöin 24-numeroisen Ta(6) lasku sujuu kymmeniä kertoja kertaa nopeammin kuin BigInt-kokonaisluvuilla
  6. # Juhani Kaukoranta 10.5.2020
  7. # Lisäinfoa https://en.wikipedia.org/wiki/Taxicab_number
  8.  
  9. println("Taxicab luku T(n) on pienin positiivinen kokonaisluku, joka voidaan esittää kahden positiivisen kokonaisluvun kuutioiden summana n eri tavalla")
  10. println("Ta(1)= 2")
  11. println("Ta(2)= 1729 , Hardy-Ramanujan luku, liittyy matemaatikkojen Ramanujan ja G.H.Hardy tapaamiseen, oli Hardyn taksin numero")
  12. println("Ta(3) = 87539319, löydettiin vuonna 1957 tietokoneen avulla")
  13. println("Ta(4) = 6963472309248, löydettiin vuonna 1991 tietokoneen avulla")
  14. println("Ta(5) = 48988659276962496, löydettiin vuonna 1994 tietokoneen avulla")
  15. println("Ta(6) = 24153319581254312065344, löydettiin vuonna 2008 tietokoneen avulla")
  16. println("Ta(7) <= 24885189317885898975235988544, Ta(7)ei siis varmistettu" )
  17. println("Ta(8) <= 50974398750539071400590819921724352, Ta(8) ei siis varmistettu")
  18. println("Nyt voit etsiä annettua taxicab lukua vastaavan lukuparien esitykset")
  19.  
  20. function Taxicab(taxicabnumber::UInt128)
  21. time0 = time()
  22. raja::UInt128 = UInt128(1+trunc(cbrt(taxicabnumber::UInt128)))
  23. println("for-silmukassa kierroksia: raja = ",raja)
  24. temp::UInt128 = UInt128(0)
  25. i::UInt128 = UInt128(0)
  26. j::UInt128 = UInt128(0)
  27. for i = 1:raja
  28. j = UInt128(trunc(cbrt(taxicabnumber-i^3)+0.5))
  29. if i^3 + j^3 == taxicabnumber
  30. if i == temp
  31. break
  32. end
  33. println(taxicabnumber," = ",i,"^3 + ",j,"^3")
  34. temp = j
  35. end
  36. end
  37. time1 = time()
  38. println("Aikaa kului ",time1 - time0, " sekuntia")
  39. end
Advertisement
Add Comment
Please, Sign In to add comment