Skip to content

Commit 641bb53

Browse files
committed
clean up for jml methods in Primality
1 parent d8be1f1 commit 641bb53

File tree

1 file changed

+16
-23
lines changed
  • symja_android_library/matheclipse-core/src/main/java/org/matheclipse/core/numbertheory

1 file changed

+16
-23
lines changed

symja_android_library/matheclipse-core/src/main/java/org/matheclipse/core/numbertheory/Primality.java

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import de.tilman_neumann.jml.factor.CombinedFactorAlgorithm;
2929
import de.tilman_neumann.util.SortedMultiset;
30+
import de.tilman_neumann.util.SortedMultiset_BottomUp;
3031
import it.unimi.dsi.fastutil.ints.Int2IntMap;
3132

3233
/**
@@ -36,7 +37,7 @@
3637
*/
3738
public class Primality {
3839

39-
private static class PrimePowerTreedMap extends TreeMap<BigInteger, Integer> {
40+
private static class PrimePowerTreedMap extends SortedMultiset_BottomUp<BigInteger> {
4041
private static final long serialVersionUID = 7802239809732541730L;
4142

4243
@Override
@@ -50,7 +51,7 @@ public Integer put(BigInteger key, Integer value) {
5051
}
5152
}
5253

53-
private static class SquareFreeTreedMap extends TreeMap<BigInteger, Integer> {
54+
private static class SquareFreeTreedMap extends SortedMultiset_BottomUp<BigInteger> {
5455
private static final long serialVersionUID = -7769218967264615452L;
5556

5657
@Override
@@ -753,7 +754,7 @@ public static List<BigInteger> factorize(final BigInteger val, List<BigInteger>
753754
* @param n
754755
* @param map of all BigInteger primes and their associated exponents
755756
*/
756-
public static void factorInteger(final BigInteger n, SortedMap<BigInteger, Integer> map) {
757+
public static void factorInteger(final BigInteger n, SortedMultiset<BigInteger> map) {
757758
Map<Integer, Integer> tMap = new TreeMap<Integer, Integer>();
758759
BigInteger N = countPrimes1021(n, tMap);
759760
if (tMap.size() > 0) {
@@ -769,11 +770,7 @@ public static void factorInteger(final BigInteger n, SortedMap<BigInteger, Integ
769770
} else {
770771
factorizer = new CombinedFactorAlgorithm(1, null, false, false, true);
771772
}
772-
SortedMultiset<BigInteger> set = factorizer.factor(N);
773-
774-
for (Map.Entry<BigInteger, Integer> entry : set.entrySet()) {
775-
map.put(entry.getKey(), entry.getValue());
776-
}
773+
factorizer.factor(N, map);
777774
}
778775
return;
779776
}
@@ -786,17 +783,14 @@ public static void factorInteger(final BigInteger n, SortedMap<BigInteger, Integ
786783
* @return map of all BigInteger primes and their associated exponents
787784
*/
788785
public static SortedMap<BigInteger, Integer> factorInteger(final BigInteger n) {
789-
SortedMap<BigInteger, Integer> map = new TreeMap<BigInteger, Integer>();
790-
factorInteger(n, map);
791-
return map;
792-
// CombinedFactorAlgorithm factorizer;
793-
// if (Config.JAVA_UNSAFE) {
794-
// final int cores = Runtime.getRuntime().availableProcessors();
795-
// factorizer = new CombinedFactorAlgorithm(cores / 2 + 1, null, true, false, true);
796-
// } else {
797-
// factorizer = new CombinedFactorAlgorithm(1, null, false, false, true);
798-
// }
799-
// return factorizer.factor(n);
786+
CombinedFactorAlgorithm factorizer;
787+
if (Config.JAVA_UNSAFE) {
788+
final int cores = Runtime.getRuntime().availableProcessors();
789+
factorizer = new CombinedFactorAlgorithm(cores / 2 + 1, null, true, false, true);
790+
} else {
791+
factorizer = new CombinedFactorAlgorithm(1, null, false, false, true);
792+
}
793+
return factorizer.factor(n);
800794
}
801795

802796
public static BigInteger rho(final BigInteger val) {
@@ -1061,7 +1055,7 @@ public static int moebiusMu(BigInteger value) {
10611055
if (value.equals(BigInteger.ONE)) {
10621056
return 1;
10631057
}
1064-
SortedMap<BigInteger, Integer> map = new SquareFreeTreedMap();
1058+
SortedMultiset<BigInteger> map = new SquareFreeTreedMap();
10651059
try {
10661060
factorInteger(value, map);
10671061
// value is square-free
@@ -1147,7 +1141,7 @@ public static boolean isPrimePower(BigInteger value) {
11471141
return false;
11481142
}
11491143
try {
1150-
SortedMap<BigInteger, Integer> map = new PrimePowerTreedMap();
1144+
PrimePowerTreedMap map = new PrimePowerTreedMap();
11511145
factorInteger(value, map);
11521146
if (map.size() == 1) {
11531147
for (Map.Entry<BigInteger, Integer> entry : map.entrySet()) {
@@ -1200,9 +1194,8 @@ public static boolean isSquareFree(BigInteger val) {
12001194
if (val.compareTo(BigInteger.ZERO) < 0) {
12011195
val = val.negate();
12021196
}
1203-
SortedMap<BigInteger, Integer> map = new SquareFreeTreedMap();
12041197
try {
1205-
factorInteger(val, map);
1198+
factorInteger(val, new SquareFreeTreedMap());
12061199
return true;
12071200
} catch (ReturnException re) {
12081201
}

0 commit comments

Comments
 (0)