Finished
This commit is contained in:
parent
fa218ada23
commit
daddc3779a
3 changed files with 64 additions and 0 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -22,3 +22,6 @@
|
||||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
hs_err_pid*
|
hs_err_pid*
|
||||||
replay_pid*
|
replay_pid*
|
||||||
|
|
||||||
|
# IntelliJ IDEA
|
||||||
|
.idea
|
||||||
|
|
|
||||||
11
gcd.iml
Normal file
11
gcd.iml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
50
src/Main.java
Normal file
50
src/Main.java
Normal file
|
|
@ -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<Integer> factorsA = primeFactors(a);
|
||||||
|
List<Integer> 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<Integer> primeFactors(int n) {
|
||||||
|
List<Integer> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue