C# :: Aufgabe #204 :: Lösung #2

3 Lösungen Lösungen öffentlich
#204

Fibonacci und die Zahl 89

Anfänger - C# von hollst - 14.05.2018 um 13:09 Uhr
Wenn man die Glieder der Fibonacci-Folge

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233 ...

entsprechend nachfolgendem Schema anordnet

0.0
0.01
0.001
0.0002
0.00003
0.000005
0.0000008
0.00000013
0.000000021
0.0000000034
0.00000000055
0.000000000089
0.0000000000144
.
.

und die Glieder aufaddiert, ergibt sich

----------------
0.01123595505...

Diese rationale Zahl beginnt mit den gleichen Nachkommadigits wie 1/89:

1/89 = 0.0112359550561798... (16 Nachkommastellen (Double))
= 0.01123595505617977528089887640449... (Taschenrechner (Abb. 1), 32 Nachkommastellen)

Berücksichtigt man bei obiger Addition quasi alle Summanden, so wird vermutet, dass sich in der Tat 1/89 exakt ergibt, unglaublich, wenn wahr, oder?

Diese Eigenschaft der Fibonacci-Folge wurde erst 1994 entdeckt (von einem Herrn Cody Birsner, damals Student in Oklahoma). Also, auch heute
ist noch genügend Platz für grandiose und phantastische Entdeckungen in der Zahlentheorie.

Man zeige mittels Programmierung, dass die Vermutung (die mittlerweile bewiesen ist) selbst bis zur Taschenrechnergenauigkeit mit 32 Nachkommastellen nicht widerlegt wird.
#2
2 Kommentare
vote_ok
von hollst (13980 Punkte) - 11.02.2019 um 20:22 Uhr
Quellcode ausblenden C#-Code
using static System.Console;
using System.Numerics;

namespace aufgabe_204_fibo_89   {
    class Program   {
        static void Main()        {
            int exponent = 100;
            BigInteger erg = 0;            

            for (var i = 0; i < exponent; i++)
                erg += i.bi_fibo() * BigInteger.Pow(10, exponent - i);

            WriteLine("   " + erg); 
            WriteLine(1.0/89); //16 Nachkommastellen
            WriteLine("   " + BigInteger.Parse("100000000000000000000000000000000") / 89);  //32 Nachkommastellen
                                                                                            //ohne erste null
            ReadKey(false);
        }
    }

    public static class MyExtensions    {

        public static BigInteger bi_fibo(this int i)        {            
            BigInteger f0 = 0, f1 = 1;
            while(i-- > 0)            {
                BigInteger f = f1 + f0;
                f0 = f1;
                f1 = f;
            }
            return f0;
        }
    }
}

Kommentare:

hollst

Punkte: 13980

761 Aufgaben
132 Lösungen
117 Kommentare

#1
13.02.2019 um 19:03 Uhr
die zeile 32
Quellcode ausblenden C#-Code
WriteLine("   " + BigInteger.Parse("100000000000000000000000000000000") / 89); 

läßt sich eleganter schreinen als
Quellcode ausblenden C#-Code
WriteLine("   " + BigInteger.Parse("1".PadRight(33, '0')) / 89);
post_arrow
569 0

hollst

Punkte: 13980

761 Aufgaben
132 Lösungen
117 Kommentare

#2
13.02.2019 um 20:12 Uhr
also, Zeile 15 ist gemeint.
post_arrow
570 0
Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben