Moin,
kam gestern mal auf die Idee, Nachkommastellen von sqrt(2) zu berechnen.
Hab also das Töplerverfahren auf 2 angepasst und in C# realisiert. 10.000 Nachkommastellen berechnet
das Programm in ca. 240 Millisekunden. Für eine Million hat es bei mir etwa 53 Minuten gebraucht.
Vielleicht interessiert es ja jemanden![:)](https://www.vb-paradise.de/wcf/images/smilies/smile.png)
Der Source ist auf 2 angepasst und funktioniert nicht mit allen anderen Zahlen, weil der Töpleralgorithmus 2er-Packs vorraussetzt und ich diese Bedingung nicht eingebaut habe, da sie für 2 nicht nötig ist.
Im Beispiel ist diese Zeile
System.Numerics importieren und Verweis setzen. Viel Spaß![:)](https://www.vb-paradise.de/wcf/images/smilies/smile.png)
Grüße
kam gestern mal auf die Idee, Nachkommastellen von sqrt(2) zu berechnen.
Hab also das Töplerverfahren auf 2 angepasst und in C# realisiert. 10.000 Nachkommastellen berechnet
das Programm in ca. 240 Millisekunden. Für eine Million hat es bei mir etwa 53 Minuten gebraucht.
Vielleicht interessiert es ja jemanden
![:)](https://www.vb-paradise.de/wcf/images/smilies/smile.png)
Der Source ist auf 2 angepasst und funktioniert nicht mit allen anderen Zahlen, weil der Töpleralgorithmus 2er-Packs vorraussetzt und ich diese Bedingung nicht eingebaut habe, da sie für 2 nicht nötig ist.
C#-Quellcode
- class Program
- {
- static void Main(string[] args)
- {
- Stopwatch x = new Stopwatch();
- x.Start();
- BigInteger number = 2;
- BigInteger fractional = 1;
- BigInteger result = 0;
- BigInteger counter = 0;
- while (counter <= 10000)
- {
- BigInteger oddNumber = fractional;
- BigInteger countFractionalDeduction = 0;
- while (number - oddNumber > 0)
- {
- number -= oddNumber;
- countFractionalDeduction++;
- oddNumber += 2;
- }
- number = number * 100;
- result = result * (10 ^ countFractionalDeduction.ToString().Length - 1) + countFractionalDeduction;
- fractional = (result << 1) * 10 + 1;
- counter++;
- }
- x.Stop();
- Console.WriteLine(result.ToString().Insert(1, ","));
- Console.WriteLine();
- Console.WriteLine("Time: " + x.Elapsed);
- Console.ReadLine();
- }
- }
Im Beispiel ist diese Zeile
while (counter <= 10000)
für die Iterationen verantwortlich, 10000 sind die Nachkommastellen, die berechnet werden.System.Numerics importieren und Verweis setzen. Viel Spaß
![:)](https://www.vb-paradise.de/wcf/images/smilies/smile.png)
Grüße
"Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero
Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nikx“ ()