C: Große ganzzahlige Datentypen |
07.06.2013, 21:41 | Auf diesen Beitrag antworten » | |||||||||||||||
nano99 | C: Große ganzzahlige Datentypen Meine Frage: Hi! Ich möchte ein C-Programm schreiben, dass alle Primzahlen ab einer bestimmten Zahl ausgibt. Bis jetzt bin ich so weit:
Nun mein Problem: Wenn der Zähler bei der Zahl 32000 (oder so) angekommen ist, geht die Zählung plötzlich bei -32000 weiter. Das ist so, weil der Datentyp long nur so weit kommt. Um das Problem zu lösen, habe ich schon versucht, statt "long" "double" zu verwenden. Dann wird mir aber bei der Modulo-Funktion (Zeile 17) der Fehler "Illegal use of floating point" angezeigt, weil Modulo ja nur mit ganzen Zahlen arbeiten kann. Gibt es jetzt irgendeine Möglichkeit, entweder einen riesigen ganzzahligen Datentyp zu verwenden, oder Modulo mit "double" zu verwenden? Danke schon mal für Antworten Gruß, nano99 Meine Ideen: Siehe oben |
|||||||||||||||
|
||||||||||||||||
07.06.2013, 22:01 | Auf diesen Beitrag antworten » | |||||||||||||||
eulerscheZahl | Das gibt dir die Maximalwerte aus:
ist bei mir beides 2147483647 (da 32 Bit), bei dir auch? Fall nicht, versuche mal folgendes:
Zur Implementierung: es reicht aus, wenn du in Zeile 13 sqrt(currnr) nimmst:
dann läuft es schneller |
|||||||||||||||
09.06.2013, 21:05 | Auf diesen Beitrag antworten » | |||||||||||||||
mathefritz | moderne Compiler ( C99 ) sollten, sogar auf 32Bit-Systemen, den 64-BitTyp long long kennen; und da ja keine negativen Werte entstehen, kannst Du auch unsigned long long nehmen und mit Werten bis 2^64 - 1 rechnen. |
|
Verwandte Themen
Die Beliebtesten » |
Die Größten » |
Die Neuesten » |