From daddc3779ad5cead39486773e692d7ea68976af0 Mon Sep 17 00:00:00 2001 From: Kizuren <96580944+Kizuren@users.noreply.github.com> Date: Wed, 17 Sep 2025 21:45:48 +0200 Subject: [PATCH] Finished --- .gitignore | 3 +++ gcd.iml | 11 +++++++++++ src/Main.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 gcd.iml create mode 100644 src/Main.java diff --git a/.gitignore b/.gitignore index 524f096..e5bef0c 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* replay_pid* + +# IntelliJ IDEA +.idea diff --git a/gcd.iml b/gcd.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/gcd.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..379fa76 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,50 @@ +import java.util.ArrayList; +import java.util.List; + +public class Main { + public static void main(String[] args) { + int a = 48; + int b = 18; + + int normalResult = normalGcd(a, b); + int euclideanResult = euclideanGcd(a, b); + + System.out.printf("Normal gcd: %d%n", normalResult); + System.out.printf("Euclidean gcd: %d%n", euclideanResult); + } + + public static int normalGcd(int a, int b) { + List factorsA = primeFactors(a); + List factorsB = primeFactors(b); + int gcd = 1; + for (int i = 0; i < factorsA.size(); i++) { + int factor = factorsA.get(i); + if (factorsB.contains(factor)) { + gcd *= factor; + factorsB.remove((Integer) factor); + } + } + return gcd; + } + + private static List primeFactors(int n) { + List factors = new ArrayList<>(); + for (int i = 2; i * i <= n; i++) { + while (n % i == 0) { + factors.add(i); + n /= i; + } + } + if (n > 1) factors.add(n); + return factors; + } + + public static int euclideanGcd(int a, int b) { + while (b != 0) { + int temp = b; + b = a % b; + a = temp; + } + return a; + } +} \ No newline at end of file