Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # PythagoranPrimitiveTripletsGroups_concise.jl
- # Pythagoraan kokonaislukusiovuiset primitiiviset tripletit
- # a^2+b^2=c^2
- println("Minkä mukaan kolmiot lajitellaan?")
- println("3 = hypotenuusa")
- println("4 = piiri eli sivujen summa")
- println("5 = pinta-ala")
- println("6 = sisäänpiirretty säde")
- ntxt = readline()
- k = parse(UInt,ntxt)
- if k == 3
- lajittelu = "hypotenuusan"
- elseif k == 4
- lajittelu = "piirin eli sivujen summan"
- elseif k == 5
- lajittelu ="pinta-alan"
- else k == 6
- lajittelu ="sisäänpiirretyn säteen"
- end
- println("Kuinka monen ryhmiä haluat (2,3,4,.. ")
- ntxt = readline()
- groups = parse(UInt,ntxt)
- max = 50
- a = [m*n for m in 1:2:max, n in 1:2:max if m>n && gcd(m,n)==1]
- 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]
- 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]
- Piiri = a + b + c
- Ala = div.(a.*b,2)
- inradius = trunc.(Int,2*Ala./Piiri)
- TripletsPiiriAlaRadius = [a b c Piiri Ala inradius]
- # lajittelu halutun kriteerin mukaan
- B = sortslices(TripletsPiiriAlaRadius, dims=1, by = x -> x[k])
- function Monikot(X,k,groups)
- rows = size(X)[1]
- numbers = 0
- println()
- for i = 1 : rows-groups+1
- ehto = true
- for j in 1: groups-1
- ehto &= X[i,k] == X[i+j,k]
- end
- if ehto == 1
- for j in 0 : groups-1
- println(X[i+j,:])
- end
- println()
- numbers += 1
- end
- end
- println(lajittelu," mukaan ",groups,"-ryhmiä oli ",numbers)
- end
- println("Pythagoraan primitiiviset tripletit ",lajittelu," mukaisesti")
- println("Primitiivisiä (ei monikertoja) tripletteja oli ",size(B)[1])
- println(" a b c Piiri Ala inradius")
- #display(B) # näytetään jos on pieni
- println()
- Monikot(B,k,groups)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement