www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

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.vorhilfe.de