Advertisement
jukaukor

PythagoranPrimitiveTripletsGroups_concise.jl

Jan 29th, 2020
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. # PythagoranPrimitiveTripletsGroups_concise.jl
  2. # Pythagoraan kokonaislukusiovuiset primitiiviset tripletit
  3. # a^2+b^2=c^2
  4. println("Minkä mukaan kolmiot lajitellaan?")
  5. println("3 = hypotenuusa")
  6. println("4 = piiri eli sivujen summa")
  7. println("5 = pinta-ala")
  8. println("6 = sisäänpiirretty säde")
  9. ntxt = readline()
  10. k = parse(UInt,ntxt)
  11. if k == 3
  12. lajittelu = "hypotenuusan"
  13. elseif k == 4
  14. lajittelu = "piirin eli sivujen summan"
  15. elseif k == 5
  16. lajittelu ="pinta-alan"
  17. else k == 6
  18. lajittelu ="sisäänpiirretyn säteen"
  19. end
  20. println("Kuinka monen ryhmiä haluat (2,3,4,.. ")
  21. ntxt = readline()
  22. groups = parse(UInt,ntxt)
  23. max = 50
  24. a = [m*n for m in 1:2:max, n in 1:2:max if m>n && gcd(m,n)==1]
  25. b = [div(m^2 - n^2,2) for m in 1:2:max, n in 1:2:max if m>n && gcd(m,n)==1]
  26. c = [div(m^2 + n^2,2) for m in 1:2:max, n in 1:2:max if m>n && gcd(m,n)==1]
  27. Piiri = a + b + c
  28. Ala = div.(a.*b,2)
  29. inradius = trunc.(Int,2*Ala./Piiri)
  30. TripletsPiiriAlaRadius = [a b c Piiri Ala inradius]
  31. # lajittelu halutun kriteerin mukaan
  32. B = sortslices(TripletsPiiriAlaRadius, dims=1, by = x -> x[k])
  33. function Monikot(X,k,groups)
  34. rows = size(X)[1]
  35. numbers = 0
  36. println()
  37. for i = 1 : rows-groups+1
  38. ehto = true
  39. for j in 1: groups-1
  40. ehto &= X[i,k] == X[i+j,k]
  41. end
  42. if ehto == 1
  43. for j in 0 : groups-1
  44. println(X[i+j,:])
  45. end
  46. println()
  47. numbers += 1
  48. end
  49. end
  50. println(lajittelu," mukaan ",groups,"-ryhmiä oli ",numbers)
  51. end
  52. println("Pythagoraan primitiiviset tripletit ",lajittelu," mukaisesti")
  53. println("Primitiivisiä (ei monikertoja) tripletteja oli ",size(B)[1])
  54. println(" a b c Piiri Ala inradius")
  55. #display(B) # näytetään jos on pieni
  56. println()
  57. Monikot(B,k,groups)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement