Jede natürliche Zahl m ist darstellbar als m = h*2^k +1

Neue Frage »

Malcang Auf diesen Beitrag antworten »
Jede natürliche Zahl m ist darstellbar als m = h*2^k +1
Hallo zusammen,

ich schaue mir für meine Masterarbeit den Algorithmus von Bosma an. Nun geht es los mit
Zitat:
Jede natürliche Zahl ist darstellbar als
mit ungerade.
Dies wollte ich nun beweisen und effizient implementieren.

Zuerst der Beweis:
Gerade beim Aufschreiben meiner Idee stelle ich fest, dass dies doch sofort aus der eindeutigen Primfaktorzerlegung folgt.

Trotzdem möchte ich gerne meine Idee vorstellen.
Dabei zeige ich zuerst, dass die Darstellung eindeutig ist.
Nehme also an, es existieren zwei Darstellungen . Es ist also . Falls nun , so folgt und damit ist gerade.
Falls , so folgt und damit wäre gerade.
Also ist und es folgt .

Ist dies so ok? Die Schreibweise würde ich anpassen, aber gerade möchte ich gerne meinen Gedankengang vorstellen.

Nun frage ich mich noch, wie ich das vernünftig implementiere (in meinem Fall in Python).
Ich würde bei Eingabe dann erstmal bilden und dann
code:
1:
2:
3:
4:
5:
6:
k=0
while m != 1
     m = m // 2
     k = k + 1
h = m // 2^k
return [h, k]

machen.
Geht das besser?

Danke für's Lesen smile
IfindU Auf diesen Beitrag antworten »
RE: Jede natürliche Zahl m ist darstellbar als m = h*2^k +1
Wie würdest du denn darstellen? Wenigstens im Paper steht mit ungerade.

Ohne Voraussetzung würde ich einfach und nehmen.

Edit: Für ist immer ungerade.
Malcang Auf diesen Beitrag antworten »

Danke IFindU. ungerade hatte ich hier nicht hingeschrieben. Sorry an alle Helfer, ich ergänze es oben. Dann ist .

Zu deinem Edit:
Aber ich gehe ja davon aus, dass ich gegeben habe.
Sei beispielsweise und auch .
IfindU Auf diesen Beitrag antworten »

Hi, siehe noch meine Anmerkung zur Ungeradheit von . Ist es denn gefordert, dass alle Zahlen so eine Darstellung besitzen, oder dient der Test für spezielle Zahlen von der Form?
HAL 9000 Auf diesen Beitrag antworten »

Zitat:
Original von Malcang
Dabei zeige ich zuerst, dass die Darstellung eindeutig ist.

Allem Anschein nach hast du "vergessen" zu erwähnen, unter welchen Zusatzbedingungen an diese Eindeutigkeit hier gelten soll. Ich nehme an, dass ungerade sein soll, außerdem kann sich die Eindeutigkeit nur auf die "+"-Varianten untereinander bzw. die "-" Varianten untereinander beziehen, denn es ist etwa

,

also mit zwei -Paaren: für "+" und für "-".


Und ja klar, die Eindeutigkeit folgt dann aus der Eindeutigkeit der Primfaktorzerlegung von bzw. .


Den Rest habe ich mir noch gar nicht angeschaut - ich wollte erstmal in dieser Frage Klarheit herstellen.

EDIT: Upps, da war ich etwas langsam. Ist ja viel passiert in 10 Minuten.
Malcang Auf diesen Beitrag antworten »

@IfindU: Das Paper sagt, es geht mit allen ganzen Zahlen. Es wird zwar im weiteren Verlauf vorausgesetzt, aber ich wollte gerne die möglichst allgemeine Form zeigen.

@HAL 9000: Danke für die wichtigen Hinweise. wird in der Tat als ungerade angenommen, das habe ich nun im Eingangspost ergänzt.
Auch den zweiten Hinweis kann ich nachvollziehen. Ich würde den Beweis dann wie oben führen, nur eben zweimal separat. Einmal für +, einmal für -
 
 
HAL 9000 Auf diesen Beitrag antworten »

Dein Python-Code ist rätselhaft. Mir würde eher sowas vorschweben:

code:
1:
2:
3:
4:
5:
6:
h = m-1 # oder m+1, je nachdem
k = 0
while ((h & 1) == 0):
    k = k+1
    h = h // 2
return [h,k]
Ist allerdings immer noch unsauber: Ruft man das mit m=1 auf, gerät man in eine unendliche Schleife ... das sollte man besser durch Überprüfung abfangen.
Malcang Auf diesen Beitrag antworten »

Zitat:
Original von IfindU
Hi, siehe noch meine Anmerkung zur Ungeradheit von . Ist es denn gefordert, dass alle Zahlen so eine Darstellung besitzen, oder dient der Test für spezielle Zahlen von der Form?


Oh, das hatte ich falsch gesehen.
Sei gegeben. Dann ist

Zitat:
Original von HAL 9000
Dein Python-Code ist rätselhaft. Mir würde eher sowas vorschweben:

code:
1:
2:
3:
4:
5:
6:
h = m-1 # oder m+1, je nachdem
k = 0
while ((h & 1) == 0):
    k = k+1
    h = h // 2
return [h,k]
Ist allerdings immer noch unsauber: Ruft man das mit m=1 auf, gerät man in eine unendliche Schleife ... das sollte man besser durch Überprüfung abfangen.


h & 1 ist ein bitweises AND, ja? Ich nehme an hiermit wird überprüft, ob das letzte Bit eine 0 ist? Ich schaue es mir gerade in der Python-Doku einmal an.
Ja, ich würde Speziallfälle vorher abfangen. Mir ging es vor allem um die Zeile
h = h // 2
Eine ganzzahlige Division ist zeitintensiv, oder?
Ich hatte die Hoffnung, dass ich möglicherweise etwas geschickter bestimmen könnte. Das ist aber immer mein Gedanke bevor ich den Rechner eine Brute-Force-Rechnung durchführen lasse.

Edit: HAL, zu deiner Anmerkung
Zitat:
Original von HAL 9000
Dein Python-Code ist rätselhaft. Mir würde eher sowas vorschweben:


Natürlich, danke sehr. Ich prüfe ja nicht ob h 1 ergibt, sondern ob es ungerade ist. Ich korrigiere das aber oben nicht, um den Lesefluss hier zu erhalten.
IfindU Auf diesen Beitrag antworten »

Zitat:
Original von Malcang
[quote]Original von IfindU
Hi, siehe noch meine Anmerkung zur Ungeradheit von . Ist es denn gefordert, dass alle Zahlen so eine Darstellung besitzen, oder dient der Test für spezielle Zahlen von der Form?


Oh, das hatte ich falsch gesehen.
Sei gegeben. Dann ist
Da wäre die Frage, ob man noch eingrenzt wie es im Paper zu sehen ist oder sehr flexibel ist. Aber ohne die Voraussetzung gilt es, ja.
HAL 9000 Auf diesen Beitrag antworten »

Zitat:
Original von Malcang
h & 1 ist ein bitweises AND, ja?

So ist es.

Zitat:
Original von Malcang
Mir ging es vor allem um die Zeile
h = h // 2
Eine ganzzahlige Division ist zeitintensiv, oder?

Na wenn du diesbezügliche Sorgen hast, dann verwende stattdessen h = h >> 1 .


Bei C/C++ wäre ich mir sicher, dass der Compiler die Division sowieso automatisch in einen Shift übersetzt. Bei Python als Interpretersprache kann das natürlich anders aussehen.
Malcang Auf diesen Beitrag antworten »

Zitat:
Original von IfindU
Da wäre die Frage, ob man noch eingrenzt wie es im Paper zu sehen ist oder sehr flexibel ist. Aber ohne die Voraussetzung gilt es, ja.


Im weiteren Verlauf werde ich das sicher machen. Gerne wollte ich aber am Anfang der Arbeit schonmal klarstellen, dass es diese eindeutige Darstellung gibt. Mir ist aber auch gerade nicht unmittelbar klar, warum gelten soll verwirrt

Zitat:
Original von HAL 9000

Na wenn du diesbezügliche Sorgen hast, dann verwende stattdessen h = h >> 1 .


Ich werde mir anschauen, was das macht. Danke smile
IfindU Auf diesen Beitrag antworten »

Zitat:
Original von Malcang
Zitat:
Original von IfindU
Da wäre die Frage, ob man noch eingrenzt wie es im Paper zu sehen ist oder sehr flexibel ist. Aber ohne die Voraussetzung gilt es, ja.


Im weiteren Verlauf werde ich das sicher machen. Gerne wollte ich aber am Anfang der Arbeit schonmal klarstellen, dass es diese eindeutige Darstellung gibt. Mir ist aber auch gerade nicht unmittelbar klar, warum gelten soll verwirrt


Es gilt auch nicht, wie man an sieht. Wenn ist, oder es gibt gar kein , je nachdem ob Ungleichung strkt ist, und bei ist ungerade und damit kann man nicht so darstellen.
HAL 9000 Auf diesen Beitrag antworten »

Zitat:
Original von Malcang
Mir ist aber auch gerade nicht unmittelbar klar, warum gelten soll verwirrt

Aus den (eindeutigen) Darstellungen bzw. folgt mitnichten . Es scheint sich um eine Zusatzvoraussetzung (dann an ) zu handeln, die vermutlich wichtig ist für den weiteren Fortgang der Überlegungen im Paper.
Malcang Auf diesen Beitrag antworten »

Zuerstmal bedanke ich mich bei euch beiden für die Aufklärungen bisher. Das hat mir schon viel gebracht. Danke sehr!

Nun zu euren beiden letzten Antworten:
Im Paper sagt der Autor ja
Zitat:
Throughout this paper, h will denote an odd positive integer. We shall
consider the question of obtaining primality criteria for for all such that .


Die Eingabe wird in Abhängigkeit von dargestellt? Ich finde das verwirrend.
Es geht ja um Primzahltests, also ist die Eingabe ohnehin ungerade. Dann ist gerade. Mit ungerade sind doch dann und eindeutig bestimmt.
HAL 9000 Auf diesen Beitrag antworten »

Zum ersten: Ich hatte meine letzte Antwort editiert, damit deutlicher herauskommt, was ich meine.

Zitat:
Throughout this paper, h will denote an odd positive integer. We shall
consider the question of obtaining primality criteria for for all such that .

Das bedeutet eben nichts weiter, als dass dieses Primzahlkriterium eben nicht für alle ungeraden taugt, sondern nur für solche mit einer Darstellung mit .
Malcang Auf diesen Beitrag antworten »

Ah ok, danke sehr. Das bringt nun Licht ins Dunkle.
Und natürlich, das folgt mitnichten. Das zeigt ja alleine das Beispiel . Jetzt sehe ich das Finger1

Ich war wirklich fixiert auf diesen Gedanken, dass in der eindeutigen Darstellung doch sicherlich gilt Hammer
Malcang Auf diesen Beitrag antworten »

Das folgende Skript spuckt mir also die möglichen Werte aus, für die der Test funktioniert.
code:
1:
2:
3:
4:
5:
6:
7:
8:
k = input()

h = 1
exp = 2**int(k)
while (h < exp):
    print(h * exp + 1)
    print(h * exp - 1)
    h += 1

Richtig?
HAL 9000 Auf diesen Beitrag antworten »

h +=2 würde ich meinen. Der Rest dürfte stimmen, wobei ein Informatiker wohl eher exp = 1 << k schreiben würde, auch wenn es hier auf die Geschwindigkeit sicher nicht ankommen dürfte. Augenzwinkern
Malcang Auf diesen Beitrag antworten »

Zitat:
Original von HAL 9000
h +=2 würde ich meinen.


Gedacht und nicht geschrieben. Ach man... unglücklich

Für heute sollte ich Feierabend machen.

Vielen Dank an euch beide!!
Malcang Auf diesen Beitrag antworten »

Doch nochmal was Big Laugh

Im weiteren Verlauf auf der ersten Seite stellt der Autor ja kurz den LL-Test und den Pépin-Test vor. Direkt nach dem LL-Test sagt er
Zitat:

Similar primality criteria exist for n of the form with h not divisible by 3.
For fixed h divisible by 3, however, one has to allow a dependency on k
in the starting values for the exponentiation (or the recursion, as in (1.2))in
the criterion...


Ich verstehe jetzt den Zusammenhang nicht. Welche Abhängigkeit in k fordert er hier zu erlauben?
HAL 9000 Auf diesen Beitrag antworten »

Ich muss mich korrigieren: Auch mit h+=1 listet dein Skript korrekte -Werte - nur dass die bei geraden nicht zum Exponenten gehören, sondern zu irgendeinem Exponenten , Beispiel:

liefert auch korrekt -Werte, denn das ist gleichbedeutend mit , nur eben zu Exponent 5 statt 4.

D.h., wenn deine Absicht war, diejenigen Zahlen aufzulisten, die genau (!) zum Exponenten gehören, dann besser mit h+=2.

-----------------------------------

Was deine Frage betrifft: Du tauchst allmählich tiefer in die Betrachtungen des Papers ein, die ich nicht kenne - ich weiß z.B. nichts mit "starting values for the exponentiation" anzufangen: Was für "Startwerte" ?
Malcang Auf diesen Beitrag antworten »

Zitat:
Original von HAL 9000
D.h., wenn deine Absicht war, diejenigen Zahlen aufzulisten, die genau (!) zum Exponenten gehören, dann besser mit h+=2.

Ja, das war es. Dann werde ich das auch so machen. Den Einwand mit h += 1 habe ich aber nachvollzogen.

Zitat:
Original von HAL 9000
Was deine Frage betrifft: Du tauchst allmählich tiefer in die Betrachtungen des Papers ein, die ich nicht kenne - ich weiß z.B. nichts mit "starting values for the exponentiation" anzufangen: Was für "Startwerte" ?


Das ist es, was ich mich auch fragte. Ich denke, dass er hiermit noch einen Zusammenhang zum LL-Test meint und dort andere Startwerte vergeben werden.


Das ist ganz häufig mein Problem in mathematischen Papern. Mir fehlt da die Stringenz. Ich bin es ja so gewohnt das Mathematik bedeutet "Erst A, dann B, dann C..." und alles baut auf etwas vorherigem auf. Ich selbst versuche auch diesen Stil einzuhalten. Bei Papern wie diesem denke ich mir oft, vor A kommt C und es wird schonmal etwas von F beschrieben. Dann geht man wieder an den Anfang zu A und springt dann nochmal hin und her.
Ich tue mir unheimlich schwer, dem zu folgen wenn dieser rote Faden nicht vorhanden ist - oder ich ihn aus Unerfahrenheit einfach nicht sehe.
IfindU Auf diesen Beitrag antworten »

Paper musst du etwas anders lesen, wenigsten am Anfang. Am Anfang gibt es Kontext. Hier: Was wird untersucht, und was gibt es für ähnliche Resultate. Was zeichnet das Resultat aus und wo sind große Abweichungen zu Erwartungen.

In meinen Augen ist Abweichung/Einschränkung das, weswegen der Kommentar zum "starting value" gibt. Die Rekursion hier und ist aus numerischer Sicht wunderschön: Es gibt kein und kein . D.h. noch bevor du das auswählst zum Untersuchen, kannst du die Rekursion berechnen und später dann einfach das -te Folgenglied nehmen, um das Kriterium zu benutzen. Vermutlich gibt es auch im Internet schon bereits vorberechnet die ersten Millionen Folgenglieder, damit man es nicht selbst tun muss.

Jetzt sagt der Autor, dass die ein ähnliches Resultat haben, aber das eine Rolle spielt für die Rekursion. D.h. man kann die Rekursion nicht a priori berechnen, sondern erst wenn das feststeht. Eine starke Einschränkung.

Wenn wir jetzt zu Abschnitt 3. Special cases sehen, sehen wir was passiert. Bei non-divisble by 3 haben wir eine einfache Rekursion, sogar explizite Darstellung , unabhängig von . Beim nächsten Theorem bekommen wir eine Abhängigkeit von in die Rekursion. Schon weniger schön.

Beim letzten Absatz vor Abschnitt 4 behandelt er als Beispiel . Hier ist nun und wir bekommen eine Abhängigkeit von in die Rekursion. Das meinte er am Anfang. Das kannst du nicht verstehen, wenn du noch auf Seite 1 bist.

D.h. wenn du etwas nicht-triviales siehst, gibt es zwei Möglichkeiten: Du übersiehst etwas (die Regel bei Lehrbüchern) oder der Autor spielt auf etwas an, was später relevant wird. Denk dran, die Zielgruppe vom Paper sind nicht Studenten, die versuchen den Stoff zu verstehen, sondern Experten, die jede Menge dazu wissen. Und die interessiert das Resultat und was daran besonders ist--und das steht auf den ersten Seiten. Die Rechtfertigungen kommen später, sind referenziert oder sind "Allgemeinwissen" der Experten. Ist für dich gerade anstrengend, aber stell dich drauf ein, dass viele so schreiben.
Malcang Auf diesen Beitrag antworten »

Hallo IfindU,

danke für diese ausführliche Antwort.
Ich versuche Paper Punkt für Punkt durchzugehen, was sicherlich mein Problem ist. Das merke ich auch hier, denn soweit wie du bin im Paper noch nicht gekommen. Ich habe dafür einfach zu sehr Bedenken, dass ich auf dem Weg zu Kapitel 3 etwas aus Kapitel 2 nicht verstehe und ich dann nicht weiterkomme. Aber deine Ausführungen waren aufschlussreich für mich. Ich sollte das wohl mehrfach im Kreis lesen Big Laugh
Außerdem begebe ich mich bei soetwas direkt auch ans Programmieren. Ich habe den Test bereits implementiert gemäß der Sätze 2.1 und 2.2 im Paper. Es funktioniert auch. Und schon stoße ich auf einige für mich interessante Entdeckungen, denen ich direkt nachgehen will.
Das ist einerseits natürlich schön da ich sehe, ich bin auf einem guten Weg. Auf der anderen Seite mag es sein, dass es mich aufhält, da die Fälle in einem späteren Kapitel besprochen werden.

Da es aber nicht schadet, mein Wissen von vornherein zu erweitern, habe ich auch direkt wieder eine Big Laugh
Ich würde sie allerdings in einen eigenen Thread packen, da es sicher thematisch nicht ausschließlich auf diesen Test abzustellen ist.
Diesen Thread hier würde ich aber gerne in Zukunft wieder aufsuchen, da mir speziell zum genannten Test mit Sicherheit noch jede Menge Fragen kommen werden Big Laugh

Ich danke euch für eure eifrige Hilfe!
Malcang Auf diesen Beitrag antworten »

Da bin ich nochmal. Ich habe eine Frage zur Übersetzung und da es um den Bosmatest geht, dachte ich, nutze ich diesen Thread wieder. Sollte man den möglicherweise umbenennen?

Meine Frage bezieht sich auf diesen Abschnitt, auf die Punkte 2.1 und 2.3:
[attach]56654[/attach]

Um Satz 2.1 (bzw. 2.2) anzuwenden benötige ich ja nun ein , sodass ist.
Nun geht es darum, dieses Element möglichst vorherzubestimmen. In 2.3 sagt er nun
Zitat:
Determine a finite Set and for every positive Integer an Integer ...

Ich stolpere beim Übersetzen. Sollte es nicht eher heißen
Zitat:
Determine a finite Set , such that for every positive Integer an Integer ...


So wie es im Text steht klingt es für mich, als würde ich die Menge in Abhängigkeit von wählen.
IfindU Auf diesen Beitrag antworten »

Für mich klingt auch die Formulierung so, dass unabhängig von ist.

"Betimme (erst) eine endliche Menge und (dann) für jedes eine Zahl , so dass... "

Deine Formulierung ist aber dort eindeutiger.
Malcang Auf diesen Beitrag antworten »

@IfindU: Danke sehr. Ich bin zwar durch mit dem Paper, aber wirklich verdaut hab' ich es noch lange nicht.
Malcang Auf diesen Beitrag antworten »

Hallo mal wieder,

ich muss nun doch noch mal was zu diesem Paper fragen.
Das Paper schreibt ja folgendes:
[attach]56774[/attach]

In der Literatur finde ich den Satzt von Proth:
[attach]56775[/attach]

Nun verstehe ich nicht genau, warum das Paper noch (Jacobisymbol) fordert.

Wenn prim ist, dann existiert ein solches sowieso und das Jacobi-Symbol fällt dann auch noch mit dem Legendre-Symbol zusammen. Der Term ist dann das Euler-Kriterium.

Für die Rückrichtung kann ich ja nun den Satz von Proth anwenden. Aber dazu brauche ich ja wiederum das Jacobi-Symbol nicht.

Hm, ich stehe da gerade auf dem Schlauch verwirrt

Edit:
Ok, ich glaube ich bin etwas mehr durchgestiegen. Ich brauche aber nun nochmal Hilfe beim Beweis.

Mein Ansatz:
Sei prim. Nach Voraussetzung ist das Jacobisymbol und damit fällt dies mit dem Legendresymbol zusammen. Unter Anwedung des Kriteriums von Euler folgt dann .

Aber ich brauche einmal einen Schubs für die Gegenrichtung.
IfindU Auf diesen Beitrag antworten »

Ist die Gegenrichtung nicht genau der Satz von Proth? Da wird es sicherlich einen schönen Beweis geben Augenzwinkern
Malcang Auf diesen Beitrag antworten »

Hallo IfindU, sorry für die späte Reaktion meinerseits.

Zitat:
Original von IfindU
Ist die Gegenrichtung nicht genau der Satz von Proth? Da wird es sicherlich einen schönen Beweis geben Augenzwinkern


Aber der Satz von Proth nimmt ja an, dass es ein beliebiges a gibt, dass diese Kongruenz erfüllt.
In dem Test aus dem Paper ist dies aber gerade das Element D, dass die Eigenschaft hat, dass gilt verwirrt

Ich habe da einen Beweis aufgeschrieben, muss aber noch eine Lücke schließen. Den Beweis würde ich dann gerne hier nochmal vorstellen und freue mich über jede Rückmeldung smile
Malcang Auf diesen Beitrag antworten »

Guten Morgen,

da bin ich nochmal. Ich habe mich an einem Beweis versucht für die Richtung von:
[attach]56786[/attach]
Der Fairness halber möchte ich sagen, dass ich mir Tipps bei Stackoverflow geholt habe, die folgende Ausarbeitung stammt aber von mir.

Beweis:
Es sei Insbesondere ist dann .
Ich versuche noch zu verstehen ob hieraus direkt folgt.
Betrachten wir einen möglichen Primteiler von . Dann folgt

Nun folgere ich, dass ein Teiler von ist.
Denn sei . Nach Bézout gibt es ganze Zahlen sodass . Es ist dann
Nach kleinem Fermat ist und nach Folgerung oben ist . Es ist also
Daher ist ein Teiler von , aber nicht von . Deshalb ist für einen Teiler von . Insbesondere ist also ein Teiler von und damit .

Falls keine Primzahl ist, so ist also was ein Widerspruch ist zur Voraussetzung

Edit:
Ach ja, das Jacobisymbol ist genau dann 0, wenn und nicht teilerfremd sind. Damit sollte sich obige Anmerkung erledigt haben.
HAL 9000 Auf diesen Beitrag antworten »

Zitat:
Original von Malcang
Ach ja, das Jacobisymbol ist genau dann 0, wenn und teilerfremd sind.

Sollte das nicht eher lauten "... nicht teilerfremd sind" ? verwirrt
Malcang Auf diesen Beitrag antworten »

Zitat:
Original von HAL 9000
Zitat:
Original von Malcang
Ach ja, das Jacobisymbol ist genau dann 0, wenn und teilerfremd sind.

Sollte das nicht eher lauten "... nicht teilerfremd sind" ? verwirrt


Das sollte es. Ich danke dir, HAL!
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »