keine sqrt methode für bigintegers?

Status
Nicht offen für weitere Antworten.

rammellaus

Mitglied
und pow geht auch net, da er n int will und 0.5 nun mal nicht int is :S
das deprimiert mich -.-
als ich vorhin zum ersten mal von den BigIntegers gelesen habe dachte ich ich könnte endlich nen algorithmus von int auf BigInteger erweitern, aber ohne quadratische wurzel ziehen zu können bringts nichts ;(

überhaupt finde ich es voll umständlich das man nicht einfach
a+b machen kann sondern a.add(b) machen muss .....
 

Wildcard

Top Contributor
Wurzelziehen musst du selbst...
Stell doch erstmal auf long um, vieleicht reicht das ja :wink:
überhaupt finde ich es voll umständlich das man nicht einfach
a+b machen kann sondern a.add(b) machen muss .....
Ich bin verdammt froh das es keine operatorenüberladung gibt!
(Ausser diesem sch**** string + string :roll: )
 

0xdeadbeef

Top Contributor
Hatte mir mal einen kleinen Algorithmus implementiert. Habe ihn jetzt nicht noch mal getestet, aber eigentlich sollte er tun.

Code:
    final private static BigInteger BigIntegerTWO     = BigInteger.valueOf(2);

    /**
     * Calculates BigInteger square root of BigInteger n
     * @param n BigInteger to calcuate squate root for
     * @return BigInteger square root of BigInteger n
     */
    private static BigInteger sqrt(BigInteger n) {
        BigInteger result = n.divide(BigIntegerTWO).add(BigInteger.ONE);
        BigInteger help = result.add(BigInteger.ONE);
        //while (result*result > x || (result+1)*(result+1)< x)
        while (result.multiply(result).compareTo(n) > 0 || help.multiply(help).compareTo(n) < 0) {
            result = result.add(n.divide(result)).divide(BigIntegerTWO);
            help = result.add(BigInteger.ONE);
        }
        return result;
    }
 

rammellaus

Mitglied
hatte gerade auch was geschrieben, allerdings etwas vereinfacht da ich für meine situation schon weiß, dass ich keine komma zahlen erhalte.........

aber warum bitte geht das hier nicht? ???:L

Code:
BigInteger b = new BigInteger("1");
for (int x = 1, x < 100, x++)
{
  b.add(BigInteger.ONE);
  System.out.println(b);
}

ich krich da hundert mal ne 1 ausgegeben :bahnhof:
 
B

Beni

Gast
Schreib "b = b.add( BitInteger.ONE )". Die BigInteger selbst verändern sich nicht, bei solchen Operationen, aber sie kreieren neue BigInteger.
 

rammellaus

Mitglied
k, hier mal meine ganze absicht :### :

Code:
import java.io.*;
import java.math.BigInteger;
public class primzerlegung
  {
    public static void main(String args[]) throws IOException
      {
        BigInteger produkt = new BigInteger((new BufferedReader(new InputStreamReader(System.in))).readLine());
        BigInteger counter = new BigInteger("2");
        BigInteger zwei = new BigInteger("2");
        while (produkt.mod((((counter.negate()).divide(zwei)).add(wurzel(((counter.divide(zwei)).pow(2)).add(produkt))))) != BigInteger.ZERO)
          {
            counter.add(zwei);
            System.out.println(zwei);
          }
        System.out.println(produkt.mod((((counter.negate()).divide(zwei)).add(wurzel(((counter.divide(zwei)).pow(2)).add(produkt))))));
      }
    
    public static BigInteger wurzel(BigInteger x)
      {
        BigInteger y = new BigInteger("1");
        System.out.println("In Wurzel drin: "+x);
        while (y.multiply(y) != x && y.max(x) == x)
          {
            y = y.add(BigInteger.ONE);
            //System.out.println(y);
          }
        if (y.max(x) == x)
            return y;
        else 
          return BigInteger.ZERO;
      }
  }


allerdings bekomme ich folgenden fehler:
arithmeticException in line 10: modulos not positive

mh wie kann denn ein modulos nicht positive sein? oO
 

0xdeadbeef

Top Contributor
Der obige Algorithmus liefert natürlich auch nur ganzzahlige Ergebnisse, allerdings dürfte er deutlich schneller konvergieren als die Brute-Force-Methode.
 

abollm

Top Contributor
0xdeadbeef hat gesagt.:
Der obige Algorithmus liefert natürlich auch nur ganzzahlige Ergebnisse, allerdings dürfte er deutlich schneller konvergieren als die Brute-Force-Methode.

Wenn man nicht richtig schaut, dann wundert man sich halt, wenn bei deinem Algorithmus z.B. hundert man eins herauskommt.

Kann passieren.

Hier einmal ein BigDecimal-Algorithmus für den OP:
Code:
...
  /**
   * Calculates BigDecimal square root of BigDecimal x
   * and with nd digits
   * @param x BigDecimal to calcuate squate root for
   * @param nd int number of digits for x
   * @return BigDecimal square root of BigDecimal x
   */
  private static BigDecimal sqrt(BigDecimal x, int nd)
  {
    
    BigDecimal zero = ZERO.setScale(nd + 10);
    BigDecimal one  = ONE.setScale(nd + 10);
    BigDecimal two  = TWO.setScale(nd + 10);
    BigDecimal ten = TEN.setScale(nd + 10);
    BigDecimal maxerr = one.movePointLeft(nd);
    
    BigDecimal lower = zero;
    BigDecimal upper = x.compareTo(one) <= 0 ? one : x;
    BigDecimal mid;
    while (true) {
      mid = lower.add(upper).divide(two, BigDecimal.ROUND_HALF_UP);
      BigDecimal sqr = mid.multiply(mid);
      BigDecimal error = x.subtract(sqr).abs();
      if (error.compareTo(maxerr) <= 0) {
        break;
      }
      if (sqr.compareTo(x) < 0) {
        lower = mid;
      } else {
        upper = mid;
      }
    }
    return mid;
  }
Diesen Schnipsel habe ich aus einem kompletten Programm herauskopiert, deshalb müssen im aufrufenden Programm selbstverständlich die angegebenen Konstanten noch gesetzt werden.

Bedienung dürfte somit klar sein, oder?
 

0xdeadbeef

Top Contributor
Eigentlich wollte er doch 'ne (Big-)Integer-Wurzel ziehen, oder? In diesem Fall ist die BigDecimal-Version vor allem eines: dramatisch (!) langsamer.
Unfd warum sollte bei meinem Algo 100mal eine 1 rauskommen? Merke: zitieren will auch gelernt sein :roll:

Aber naja, von mir aus: macht was ihr wollt.
 

abollm

Top Contributor
0xdeadbeef hat gesagt.:
Eigentlich wollte er doch 'ne (Big-)Integer-Wurzel ziehen, oder? In diesem Fall ist die BigDecimal-Version vor allem eines: dramatisch (!) langsamer.
Unfd warum sollte bei meinem Algo 100mal eine 1 rauskommen? Merke: zitieren will auch gelernt sein :roll:

Aber naja, von mir aus: macht was ihr wollt.

Stimmt, lesen und zitieren müsste man können (mea maxima culpa -> Asche auf mein Haupt!). Aber _so_ viel langsamer ist der BigDecimal-Algorithmus auch nicht.
 

rammellaus

Mitglied
mh naja das klappt ja alles soweit wies oben steht, aber der vergleich mit dem operator == funktioniert irgendwie nicht korrekt..... also selbst wenn da steht
while (y.multiply(y) != x)
while (36!=36)

springt er net aus der while raus
???:L
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Kann keine Labels erstellen, was ist hier syntaktisch falsch Allgemeine Java-Themen 5
berserkerdq2 Labels in IJVM sind keine lokalen Variablen oder? Allgemeine Java-Themen 2
O Warum kann ich so keine Elemente löschen und erhalte einen IllegalStateException? Allgemeine Java-Themen 4
pkm javax.script.ScriptEngineManager gibt mir keine Engine Allgemeine Java-Themen 4
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
Tobero Eclipse Runnable jar exportiert keine Textures? Allgemeine Java-Themen 12
S createTempFile erstellt keine temporäre Datei Allgemeine Java-Themen 13
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
Thallius Keine Ahnung Allgemeine Java-Themen 15
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
L JPA keine shared primary key Allgemeine Java-Themen 11
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
N Warum habe ich keine Spaltenüberschriften? Allgemeine Java-Themen 6
W Thread sleep 30 sekunden - wenn keine Antwort bis dahin neu senden Allgemeine Java-Themen 2
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
Bluedaishi Input/Output Bluetooth Bondrucker MZ220 keine Verbindung Allgemeine Java-Themen 0
F Cardlayout prüfen ob schon vorhanden, keine doppelten Allgemeine Java-Themen 3
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
M Eclipse Keine Ausgabe mehr bei Fehlern Allgemeine Java-Themen 3
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
S Bekomme mit Scanner und URL keine Html-Seite ausgelesen Allgemeine Java-Themen 3
127.0.0.1 Subversion neues SVN Projekt, keine Main gefunden ?! Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
M keine Bilder in .jar-Datei (java) Allgemeine Java-Themen 23
D Chat - keine Schrift sichtbar Allgemeine Java-Themen 4
J Eclipse Elipse gibt mir keine Vorschläge mehr :( Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
S Tomcat java.util.logging - keine Logs Allgemeine Java-Themen 12
Guybrush Threepwood Warten, bis keine Taste gedrückt Allgemeine Java-Themen 11
S Keine NullPointerExceptions in nebenläufigen Threads Allgemeine Java-Themen 21
T Batch-File / keine Verbindung zur DerbyDB Allgemeine Java-Themen 3
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
X Warum kann ich keine ZIP Datein mit renameto() in was anderes benennen? Allgemeine Java-Themen 13
B warum keine nested blocks Allgemeine Java-Themen 2
GilbertGrape Jetty-Dienst startet keine Programme mit Oberfläche Allgemeine Java-Themen 2
S Keine Exception-Warning in Eclipse Allgemeine Java-Themen 3
D Warum keine Mehrfachvererbung? Allgemeine Java-Themen 5
tfa Keine Closures in Java 7 (?) Allgemeine Java-Themen 17
J Probleme wenn man keine serialVersionUID definiert? Allgemeine Java-Themen 27
G PrintWriter in .jar erstellt keine Datei Allgemeine Java-Themen 4
F Kann man keine Arrays von generischen Typen erstellen? Allgemeine Java-Themen 2
G Javadoc generiert keine Links zu java.lang Klassen? Allgemeine Java-Themen 4
A ArrayListe :Doppelte entfernen -> keine Referenzen Allgemeine Java-Themen 26
ARadauer Random keine Zahlen doppelt Allgemeine Java-Themen 4
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
F GregorianCalendar wirft keine Fehler bei z.b. Monat 17 Allgemeine Java-Themen 3
G Jarfile gibt keine Textnachrichten aus Allgemeine Java-Themen 2
J java vnc client verbessern: KeyEvent.VK_ALT keine Wirkung? Allgemeine Java-Themen 12
J jar-Datei enthält keine Main-Class Allgemeine Java-Themen 22
N Keine Klassen startbar/mit Abhängigkeiten erstellbar Allgemeine Java-Themen 2
WMaerz Der neue JDK 6 enthält keine javac.exe, tool.jar usw. Allgemeine Java-Themen 6
P Webhosting-Paket unterstützt nur .war Dateien keine jsp Allgemeine Java-Themen 4
A Kann keine neue Klasse erstellen. Allgemeine Java-Themen 3
D TextPane nach Laden keine Styles Allgemeine Java-Themen 2
A JSP include - keine Fehlermeldung Allgemeine Java-Themen 2
H Vektoren nehmen keine neuen Werte an Allgemeine Java-Themen 5
N Applet übernimmt keine Änderungen Allgemeine Java-Themen 13
C Vier Stellen Keine Doppelt (Zufall) Allgemeine Java-Themen 20
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
C Java zeigt keine Fensterinhalte Allgemeine Java-Themen 3
G Leere Fenster (Keine Schrift, Reiter/ Buttons) bei Java Allgemeine Java-Themen 5
G woher installiertes JDK? (keine Adminrechte) Allgemeine Java-Themen 3
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
0 Keine clone-Methode für BigDecimal und BigInteger? Allgemeine Java-Themen 3
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3
Y Comm-API findet keine Ports Allgemeine Java-Themen 5
B Keine Musik bei Applikation Allgemeine Java-Themen 9
H Kann keine Zahlen von Buchstaben unterscheiden Allgemeine Java-Themen 4
V Javadoc ertellt keine korrekten links Allgemeine Java-Themen 3
O Best Practice Laufzeitvergleich Math.sqrt() aus Java und sqrt() aus C++ Allgemeine Java-Themen 1
W Hilfe bei Methode Allgemeine Java-Themen 14
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
Simon16 compareTo Methode überschreiben Allgemeine Java-Themen 4
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
M CrudRepository save Methode mocken Allgemeine Java-Themen 6
thor_norsk toString() - Methode Allgemeine Java-Themen 6
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
Encera Zweite Main-Methode zuschalten Allgemeine Java-Themen 18
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
E Methoden abstract static Methode Allgemeine Java-Themen 8
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
B In Java Methode mit generic input und output basteln? Allgemeine Java-Themen 4
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
T C++ Methode Übersetzung in Java Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben