www.vorkurse.de
Ein Projekt von vorhilfe.de
Die Online-Kurse der Vorhilfe

E-Learning leicht gemacht.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Teams · Forum · Wissen · Kurse · Impressum
Forenbaum
^ Forenbaum
Status Mathe-Vorkurse
  Status Organisatorisches
  Status Schule
    Status Wiederholung Algebra
    Status Einführung Analysis
    Status Einführung Analytisc
    Status VK 21: Mathematik 6.
    Status VK 37: Kurvendiskussionen
    Status VK Abivorbereitungen
  Status Universität
    Status Lerngruppe LinAlg
    Status VK 13 Analysis I FH
    Status Algebra 2006
    Status VK 22: Algebra 2007
    Status GruMiHH 06
    Status VK 58: Algebra 1
    Status VK 59: Lineare Algebra
    Status VK 60: Analysis
    Status Wahrscheinlichkeitst

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Anwendungsprogramme" - Schriftliches Rechnen
Schriftliches Rechnen < Anwendungsprogramme < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Anwendungsprogramme"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Schriftliches Rechnen: grosser Teiler
Status: (Frage) beantwortet Status 
Datum: 10:19 Fr 16.03.2007
Autor: nitrosio

Guten Tag. Ich möchte gerne ein Programm (in QBasic) entwickeln, mit dem ich möglichst grosse Primzahlen berechnen kann. Jetzt möchte ich nicht den MOD-Befehl verwenden und bei einer normalen Division hat der Teiler eine maximale Grösse von 200'000'000. Das ist mir aber zu wenig; ich möchte (wenigstens auch nur theoretisch) mit mehreren Millionen Kommastellen und entsprechend grossen Textstrings arbeiten. Jetzt meine frage: wie mache ich das genau; wie kann ich schriftlich eine Zahl durch einen möglichst grossen Divisor teilen? Kann mir da jemand weiterhelfen? Vielen Dank.

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

        
Bezug
Schriftliches Rechnen: Antwort
Status: (Antwort) fertig Status 
Datum: 11:19 Fr 16.03.2007
Autor: Ankh

Divident : Divisor = Quotient
Sei a, der Divident, m-stellig und b, der Divisor, n-stellig und c der Quotient.
Bezeichne [mm] x_i [/mm] die i-te Stelle einer Zahl.
Dann müsste die Rechnung ungefähr so ablaufen:

Falls m < n, dann c = 0,..., weiterrechnen mit a*10.

Für m>n: suche das minimale k so dass [mm] a_1a_2...a_k \ge [/mm] b gilt. Die nächste Stelle [mm] c_i [/mm] ergibt sich aus [mm] $[a_1a_2...a_k [/mm] : b] [mm] \in \{1, ..., 9\}$. [/mm]
Weitermachen mit [mm] (a_1a_2...a_k [/mm] - [mm] (c_i *b))*10+a_{k+1}. [/mm]
Abbruchbedingung: [mm] a_1a_2...a_k [/mm] - [mm] (c_i [/mm] *b) = 0.

Für m=n: Testen, ob a < b gilt und entsprechend Fall 1 oder 2 abarbeiten.

Wenn a, b keine Primzahlen sind, ist es sinnvoll mit Primfaktorzerlegung zu arbeiten.

Bezug
                
Bezug
Schriftliches Rechnen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:16 Fr 16.03.2007
Autor: nitrosio

Vielen Dank für deine Antwort, Ankh. Ich muss wohl also ganz normal vorgehen; d.h. ich ich nehme so viele Stellen vom Dividenten, bis ich ihn teilen kann bzw. bis der Divisor mindestens drei mal reinpasst, nehme den abgerundeten Quozienten als erste Stelle des Ergebnises, nehme den Rest und hänge die nächsten Stellen Dividenten dran, so dass ich auch dies wieder teilen kann usw. Ich muss also mit jeder einzelnen Ziffer arbeiten und dieser eine eigene Variable zuweisen; auch der Primzahlennummer (mit einem Roboter und viele Schleifen). Demnach ist eine Division wohl immer ein Produkt aus Multiplikation (Addition) und Subtraktion. Mit Faktorzerlegung arbeite ich lieber nicht, da das bei grossen Zahlen relativ lange dauert. Das Prinzip des Programmes ist mir wenigstens auch schon mal klar: ich nehme eine Zahl und schaue, ob diese durch eine kleinere Primzahl (3, 5, 7, 11) teilbar ist (bis zur Quadratwurzel), und speichere (falls das dann eine Primzahl ist) diese dann in einer sequentiellen Datei unter einer Variablen ab. Danach nehme ich die Zahl und addiere zwei dazu... Ich habe hier schon mal ein gutes Programm geschrieben, allerdings funktioniert das noch mit MOD und teilt die Zahl durch jede ungerade Zahl bis zur Wurzel, falls sie vorher nicht teilbar ist. Ist jedenfalls recht schnell; im Gegensatz zum Primzahlensieb, Additionsmethode etc.

zahl = 3: teiler = 3
DO
'wenn prim
IF SQR (zahl) < teiler THEN PRINT zahl; : zahl = zahl + 2: teiler = 3
'wenn teilbar
IF zahl MOD teiler = 0 THEN zahl = zahl + 2: teiler = 1
IF zahl > 1000 THEN END
teiler = teiler + 2
LOOP

Bezug
                        
Bezug
Schriftliches Rechnen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:21 Fr 16.03.2007
Autor: Ankh

Du musst nicht unbedingt den ganzen Divisor verwenden:
Angenommen, a und b sind beide m-stellig mit a>b.
Dann weißt du sicher, dass [mm] $[\bruch{a_1}{2b_1}] \le [/mm] c [mm] \le [\bruch{a_1}{b_1}]$. [/mm]
Je mehr Stellen du betrachtest, um so genauer kannst du c einschachteln. Unter Umständen musst du dann nicht alle Stellen berücksichtigen.
Der Fall a [mm] \not= [/mm] b lässt sich sicher analog meistern.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Anwendungsprogramme"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorkurse.de
[ Startseite | Mitglieder | Teams | Forum | Wissen | Kurse | Impressum ]