Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Tuottaa primitiivisia Heronin kolmioita
- # yritys & erehdys- eli bruteforce-menetelmällä...;-)
- # (kokonaislukusivuisia, syt(a,b,c)=1)
- # lajiteltuna pinta-alan ja sivujen pituuden mukaan
- # Juhani Kaukoranta 28.02.2020
- max = 25
- function BruteforceHeron(max)
- Heron = [0 0 0 0 0 "0"] # [a b c piiri ala inradius]
- for a in 1 : max
- for b in 1 : max
- for c in 1: max
- if isinteger((a+b+c)/2)
- s = div(a+b+c,2)
- d2 = s*(s-a)*(s-b)*(s-c)
- if d2 > 0 && isinteger(sqrt(d2))
- d = sqrt(d2)
- if gcd(a,gcd(b,c))== 1 && c >= b && b >= a # monikerrat pois, järjestys cba-mukaan
- inradius = string(trunc(Int,d)//s) # sisäänpiirretty säde
- kolmio = [trunc(Int,a) trunc(Int,b) trunc(Int,c) trunc(Int,2*s) trunc(Int,d) inradius]
- Heron =vcat(Heron,kolmio)
- end
- end
- end
- end
- end
- end
- return Heron
- end
- H = BruteforceHeron(max)[setdiff(1:end,1),:] # Heron ekarivi [0 0 0 0 0 "0"] poistettuna
- #H=A[setdiff(1:end,1),:] # poistetaan ekarivi [0 0 0 0 "0"]
- println("[a b c piiri ala sisäsäde]")
- display(H[sortperm(H[:, 5]), :]) # lajitellaan pinta-alan mukaan
Advertisement
Add Comment
Please, Sign In to add comment