gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
dodati MaxNiza i Pitagorine trojke - primeri za efikasnosta algoritama
[spa1-materijali.git] / kodovi / efikasnost-algoritama / Pitagora.java
1 public class Pitagora {
3 /**
4 * Generisanje svih trojki brojeva do neke granice uz proveru da li je to
5 * upravo Pitagorina trojka.
6 */
7 static void trojke1() {
8 int br = 0;
9 int gr = 100;
11 System.out.println("\nPitagorine trojke\n");
13 for (int x = 1; x <= gr; x++) {
14 for (int y = 1; y <= gr; y++) {
15 for (int z = 1; z <= gr; z++) {
16 if (x * x + y * y == z * z) {
17 br++;
18 stampajTrojku(br, x, y, z);
19 }
20 }
21 }
22 }
23 }
25 /**
26 * Generisanje parova brojeva a,b i provera da li postoji celo c koje bi
27 * formiralo Pitagorinu trojku.
28 */
29 static void trojke2() {
30 int br = 0;
31 int gr = 100;
33 System.out.println("\nPitagorine trojke 2\n");
35 for (int x = 1; x <= gr; x++) {
36 for (int y = 1; y <= gr; y++) {
37 double zreal = x * x + y * y;
38 zreal = Math.sqrt(zreal);
39 // Provera da li je ceo broj
40 int z = (int) zreal;
41 if (zreal == z) {
42 br++;
43 stampajTrojku(br, x, y, z);
44 }
45 }
46 }
47 }
49 /**
50 * Euklidova teorema daje Pitagorinu trojku za bilo koja dva prirodna broja
51 * n i m.
52 */
53 static void trojke3() {
54 int br = 0;
55 int gr3 = 10;
57 System.out.println("\nPitagorine trojke 3\n");
59 for (int m = 1; m <= gr3; m++) {
60 for (int n = 1; n <= m - 1; n++) {
61 int x = m * m - n * n;
62 int y = 2 * m * n;
63 int z = m * m + n * n;
64 br++;
65 stampajTrojku(br, x, y, z);
66 }
67 }
68 }
70 /**
71 * Generisanje trojki kod kojih je razlika izmedju a i c 1. Postupak je
72 * izveden preko Euklidove teoreme.
73 */
74 static void trojke4() {
75 int br = 0;
76 int gr4 = 10;
78 System.out.println("\nPitagorine trojke 4\n");
80 for (int m = 2; m <= gr4; m++) {
81 int n = m - 1;
82 int a = 2 * m * n;
83 int b = m * m - n * n;
84 int c = m * m + n * n;
85 br++;
86 stampajTrojku(br, a, b, c);
87 }
88 }
90 /**
91 * Generisanje trojki kod kojih je razlika izmedju a i b 1. Postupak je
92 * izveden preko Euklidove teoreme i koriste se inkrementalna resenja
93 * dobijene Pell-ove jednacine.
94 */
95 static void trojke5() {
96 int gr5 = 6;
97 int br = 0;
99 System.out.println("\nPitagorine trojke 5\n");
101 int w = 3;
102 int n = 2;
103 for (int i = 1; i <= gr5; i++) {
104 int m = n + w;
105 int a = 2 * m * n;
106 int b = m * m - n * n;
107 int c = m * m + n * n;
108 br++;
109 stampajTrojku(br, a, b, c);
110 int temp = w;
111 w = 3 * w + 4 * n;
112 n = 2 * temp + 3 * n;
116 public static void stampajTrojku(int br, int x, int y, int z) {
117 System.out.print(br + " ");
118 System.out.print("a = " + x);
119 System.out.print(", b = " + y);
120 System.out.print(", c = " + z);
121 System.out.println();
124 public static void main(String[] args) {
125 trojke1();
126 trojke2();
127 trojke3();
128 trojke4();
129 trojke5();
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner