Wie kann ich einen int
mit einem BigInteger
in Java vergleichen? Ich brauche speziell das wissen, wenn ein int
weniger als ein BigInteger
ist. Hier ist der Code, den ich verwende:Java compare integer und bigInteger
private static BigInteger two = new BigInteger("2");
private static BigInteger three = new BigInteger("3");
private static BigInteger zero = new BigInteger("0");
public static BigInteger bigIntSqRootCeil(BigInteger x) throws IllegalArgumentException {
if (x.compareTo(BigInteger.ZERO) < 0) {
throw new IllegalArgumentException("Negative argument.");
}
if (x == BigInteger.ZERO || x == BigInteger.ONE) {
return x;
}
BigInteger two = BigInteger.valueOf(2L);
BigInteger y;
for (y = x.divide(two);
y.compareTo(x.divide(y)) > 0;
y = ((x.divide(y)).add(y)).divide(two));
if (x.compareTo(y.multiply(y)) == 0) {
return y;
} else {
return y.add(BigInteger.ONE);
}
}
private static boolean isPrimeBig(BigInteger n){
if (n.mod(two) == zero)
return (n.equals(two));
if (n.mod(three) == zero)
return (n.equals(three));
BigInteger m = bigIntSqRootCeil(n);
for (int i = 5; i <= m; i += 6) {
if (n.mod(BigInteger.valueOf(i)) == zero)
return false;
if(n.mod(BigInteger.valueOf(i + 2)) == zero)
return false;
};
return true;
};
Danke.
Nun, warum denken Sie, dass nicht funktioniert? –
@ E_net4 Ähm ... Ich weiß, warum es nicht funktioniert. Ich suche nach einer Lösung. – Progo
Das ist eine Menge Code, wenn Sie "BigInt mit einem Int vergleichen" möchten. Gibt es da noch eine andere Frage? Andernfalls: http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html#compareTo(java.math.BigInteger) 'compareTo' gibt -1 (kleiner als), 0 (gleich) oder 1 (größer als) – Gus