gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/kodovi/efikasnost-algoritama/Pitagora.java b/kodovi/efikasnost-algoritama/Pitagora.java
--- /dev/null
@@ -0,0 +1,131 @@
+public class Pitagora {
+
+ /**
+ * Generisanje svih trojki brojeva do neke granice uz proveru da li je to
+ * upravo Pitagorina trojka.
+ */
+ static void trojke1() {
+ int br = 0;
+ int gr = 100;
+
+ System.out.println("\nPitagorine trojke\n");
+
+ for (int x = 1; x <= gr; x++) {
+ for (int y = 1; y <= gr; y++) {
+ for (int z = 1; z <= gr; z++) {
+ if (x * x + y * y == z * z) {
+ br++;
+ stampajTrojku(br, x, y, z);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Generisanje parova brojeva a,b i provera da li postoji celo c koje bi
+ * formiralo Pitagorinu trojku.
+ */
+ static void trojke2() {
+ int br = 0;
+ int gr = 100;
+
+ System.out.println("\nPitagorine trojke 2\n");
+
+ for (int x = 1; x <= gr; x++) {
+ for (int y = 1; y <= gr; y++) {
+ double zreal = x * x + y * y;
+ zreal = Math.sqrt(zreal);
+ // Provera da li je ceo broj
+ int z = (int) zreal;
+ if (zreal == z) {
+ br++;
+ stampajTrojku(br, x, y, z);
+ }
+ }
+ }
+ }
+
+ /**
+ * Euklidova teorema daje Pitagorinu trojku za bilo koja dva prirodna broja
+ * n i m.
+ */
+ static void trojke3() {
+ int br = 0;
+ int gr3 = 10;
+
+ System.out.println("\nPitagorine trojke 3\n");
+
+ for (int m = 1; m <= gr3; m++) {
+ for (int n = 1; n <= m - 1; n++) {
+ int x = m * m - n * n;
+ int y = 2 * m * n;
+ int z = m * m + n * n;
+ br++;
+ stampajTrojku(br, x, y, z);
+ }
+ }
+ }
+
+ /**
+ * Generisanje trojki kod kojih je razlika izmedju a i c 1. Postupak je
+ * izveden preko Euklidove teoreme.
+ */
+ static void trojke4() {
+ int br = 0;
+ int gr4 = 10;
+
+ System.out.println("\nPitagorine trojke 4\n");
+
+ for (int m = 2; m <= gr4; m++) {
+ int n = m - 1;
+ int a = 2 * m * n;
+ int b = m * m - n * n;
+ int c = m * m + n * n;
+ br++;
+ stampajTrojku(br, a, b, c);
+ }
+ }
+
+ /**
+ * Generisanje trojki kod kojih je razlika izmedju a i b 1. Postupak je
+ * izveden preko Euklidove teoreme i koriste se inkrementalna resenja
+ * dobijene Pell-ove jednacine.
+ */
+ static void trojke5() {
+ int gr5 = 6;
+ int br = 0;
+
+ System.out.println("\nPitagorine trojke 5\n");
+
+ int w = 3;
+ int n = 2;
+ for (int i = 1; i <= gr5; i++) {
+ int m = n + w;
+ int a = 2 * m * n;
+ int b = m * m - n * n;
+ int c = m * m + n * n;
+ br++;
+ stampajTrojku(br, a, b, c);
+ int temp = w;
+ w = 3 * w + 4 * n;
+ n = 2 * temp + 3 * n;
+ }
+ }
+
+ public static void stampajTrojku(int br, int x, int y, int z) {
+ System.out.print(br + " ");
+ System.out.print("a = " + x);
+ System.out.print(", b = " + y);
+ System.out.print(", c = " + z);
+ System.out.println();
+ }
+
+ public static void main(String[] args) {
+ trojke1();
+ trojke2();
+ trojke3();
+ trojke4();
+ trojke5();
+ }
+}