Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Bildungsvorschrift (http://www.informatikerboard.de/board/thread.php?threadid=3025)
Geschrieben von eulerscheZahl am 12.05.2016 um 06:48:
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.
Geschrieben von blindmessenger am 12.05.2016 um 09:53:
Hallo Herr Euler,
ich danke Dir... Das hilft mir sehr weiter...
Geschrieben von blindmessenger am 12.05.2016 um 13:16:
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?
Geschrieben von eulerscheZahl am 12.05.2016 um 21:40:
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.
Geschrieben von blindmessenger am 17.05.2016 um 11:07:
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...
Geschrieben von eulerscheZahl am 17.05.2016 um 12:05:
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]](http://www.matheboard.de/latex2png/latex2png.php?2^x-1 \equiv 0 \,\mod2\cdot n+1)
Geschrieben von blindmessenger am 17.05.2016 um 14:20:
Wenn die kleinste Zahl x gesucht wird, wird dann der Reihe nach von 1 an abgefragt?
Forensoftware: Burning Board, entwickelt von WoltLab GmbH