Bildungsvorschrift

Neue Frage »

Auf diesen Beitrag antworten »
blindmessenger Bildungsvorschrift

Hallo,
hat jemand eine Idee wie man diese Bildungsvorschrift programmiert?

https://oeis.org/search?q=1%2C2%2C4%2C3%...glish&go=Search

Unten steht zwar ein Programm... Ich krieg es nicht zum laufen...

Vielleicht in C Sharp?
 
Auf diesen Beitrag antworten »
eulerscheZahl

Nachdem schon ein pari Programm angeboten ist, würde ich das auch gleich nehmen (pari ist im Gegensatz zu Maple und Mathematica kostenlos, python und Haskell gibt es aber auch umsonst).
Pari kann noch eine Menge mehr: schnelles Rechnen mit großen Zahlen, numerisches Lösen von Gleichungen, Faktorisieren von Zahlen und Termen, ...

1. Hole die Pari (Linux: apt-get install pari-gp, Windows: http://pari.math.u-bordeaux.fr/download.html.
2. Starte Pari
3. Kopiere a(n)=if(n<0, 0, znorder(Mod(2, 2*n+1))) nach Pari und bestätige mit Enter
4. Mit a(13) kannst du z.B. den 13. Wert berechnen
Die ersten 10 Werte kriegst du mit for(i=0,10,printf("a(%2d)=%2d\n",i,a(i)))

Ich wollte gerade lieb sein und dir noch den Python Code nach C# übersetzen, aber der produziert nur Endlosschleifen.
Auf diesen Beitrag antworten »
blindmessenger

Hallo Herr Euler,
ich danke Dir... Das hilft mir sehr weiter...
Auf diesen Beitrag antworten »
blindmessenger

Hallo,
nochmal eine Frage vom Laien... Was mir aufgefallen ist bei Pari und auch bei C Sharp...

Wenn ich über eine gewisse Anzahl von Startwerten komme gibt er mir nicht mehr alle Werte aus... Es scheint so dass er zwar alle durchrechnet aber in der Konsole werden nur die letzten angezeigt.

Bei diesem Code zum Beispiel wenn ich for(i=0,10000,printf("a(%2d)=%2d\n",i,a(i))) rechnen lasse, dann zeigt er nur die Werte für die Startwerte von 99702-10000 an...

Woran liegt das und kann ich auch alle anzeigen lassen?
 
Auf diesen Beitrag antworten »
eulerscheZahl

Die Werte werden schon ausgegeben. Aber die Konsole speichert nur die letzten Zeilen.
Du kannst aber auch in eine Datei schreiben.
Bei Konsolenanwendungen (wie denen, die du mit C# erstellst): Rufe das Programm mit program.exe > output.txt auf. Dann wird die Ausgabe in eine Datei umgeleitet. Alternativ kannst du mit C# natürlich auch direkt in eine Datei schreiben.
Pari kennt den Befehl write. Schreibe ?write, um die Beschreibung zu sehen.
Auf diesen Beitrag antworten »
blindmessenger

Hallo,

hat jemand eine Ahnung wie man zu dieser Bildungsvorschrift die Laufzeit berechnet:

a(n)=if(n<0, 0, znorder(Mod(2, 2*n+1)))

Ich verstehe die Funktion als solche schon nicht... Da sind meinen zahlentheoretischen Kenntnisse zu gering...
Auf diesen Beitrag antworten »
eulerscheZahl

Ich habe den Python Code noch zum Laufen gebracht.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
def A002326(n): # entspricht (PARI) for(i=0, 200, i++; m=0; for(x=1, i, if(((2^x-1))%i==0, m=x; break)); 
	m = 0
	for x in range(1, 2*n+1):
		if (2^x-1) % (2*n+1) == 0:
			return x
	return m

def A002326_(n):
    n = n
    a=1
    m=0
    while True:
        a*=2
        a%=(2*n+1)
        m+=1
        if a==1: break
    return m

for i in range(1,10): print A002326_(i)


letztendlich heißt das: es wird die kleinste Zahl x gesucht, sodass [latex]2^x-1 \equiv 0 \,\mod2\cdot n+1[/latex]
Auf diesen Beitrag antworten »
blindmessenger

Wenn die kleinste Zahl x gesucht wird, wird dann der Reihe nach von 1 an abgefragt?
 
Neue Frage »
Antworten »


Verwandte Themen