jukaukor

BruteforceHeron.jl

Jan 29th, 2020
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. # Tuottaa primitiivisia Heronin kolmioita
  2. # yritys & erehdys- eli bruteforce-menetelmällä...;-)
  3. # (kokonaislukusivuisia, syt(a,b,c)=1)
  4. # lajiteltuna pinta-alan ja sivujen pituuden mukaan
  5. # Juhani Kaukoranta 28.02.2020
  6.  
  7. max = 25
  8. function BruteforceHeron(max)
  9. Heron = [0 0 0 0 0 "0"] # [a b c piiri ala inradius]
  10. for a in 1 : max
  11. for b in 1 : max
  12. for c in 1: max
  13. if isinteger((a+b+c)/2)
  14. s = div(a+b+c,2)
  15. d2 = s*(s-a)*(s-b)*(s-c)
  16. if d2 > 0 && isinteger(sqrt(d2))
  17. d = sqrt(d2)
  18. if gcd(a,gcd(b,c))== 1 && c >= b && b >= a # monikerrat pois, järjestys cba-mukaan
  19. inradius = string(trunc(Int,d)//s) # sisäänpiirretty säde
  20. kolmio = [trunc(Int,a) trunc(Int,b) trunc(Int,c) trunc(Int,2*s) trunc(Int,d) inradius]
  21. Heron =vcat(Heron,kolmio)
  22. end
  23. end
  24. end
  25. end
  26. end
  27. end
  28. return Heron
  29. end
  30. H = BruteforceHeron(max)[setdiff(1:end,1),:] # Heron ekarivi [0 0 0 0 0 "0"] poistettuna
  31. #H=A[setdiff(1:end,1),:] # poistetaan ekarivi [0 0 0 0 "0"]
  32. println("[a b c piiri ala sisäsäde]")
  33. display(H[sortperm(H[:, 5]), :]) # lajitellaan pinta-alan mukaan
Advertisement
Add Comment
Please, Sign In to add comment