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

14 Lösungen Lösungen öffentlich
#70

Finde die erste Zahl die durch alle Zahlen bis 30teilbar ist

Fortgeschrittener - C# von 96fabi - 25.09.2014 um 09:01 Uhr
Gesucht wird die erste Zahl, die durch alle Zahlen bis 30 geteilt werden kann(1-30).
Zum Einstieg kann man erstmal die erste Zahl suchen , die durch alle Werte bis 20 geteilt werden kann.
Dieses ist 232792560
#2
1x
vote_ok
von Mexx (2370 Punkte) - 29.09.2014 um 09:54 Uhr
Mit dynamischer Eingabe und Zeitermittlung für die Dauer der Berechnung

Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;

namespace ErsteDurchAlleZahlenBisNTeilbareZahl
{
    class Program
    {
        static Stopwatch stopuhr;
        static void Main(string[] args)
        {
            Console.WriteLine("Geben Sie die zu berechnende Zahl ein");
            Int32 input = Convert.ToInt32(Console.ReadLine());
            stopuhr = new Stopwatch();
            stopuhr.Start();
            Thread thr = new Thread(new ParameterizedThreadStart(Berechnen));
            thr.Start(input);
            while (thr.IsAlive)
            {
                Console.WriteLine("Berechnung wird ausgeführ, vergangene Zeit: {0}", stopuhr.Elapsed.ToString("mm\\:ss\\.ff"));
                Thread.Sleep(1000);
            }
            stopuhr.Stop();
            Console.ReadKey();
        }

        static private void Berechnen(object inp)
        {
            int input = (int)inp;
            int[] alleZahlenBisN = new int[input - 2];
            for (int i = 0; i < input - 2; i++)
            {
                alleZahlenBisN[i] = i + 3;
            }

            long ergebnis = 0;
            bool ok = false;
            for (long i = input; !ok; i++)
            {
                bool ok2 = true;
                if (i % 2 == 0)
                {
                    for (int j = input; j > 0; j--)
                    {
                        if (i % j != 0)
                        {
                            ok2 = false;
                            break;
                        }
                    }
                    if (ok2)
                    {
                        ergebnis = i;
                        break;
                    }
                }
            }
            Console.WriteLine("Die erste durch alle Zahlen bis {0} teilbare Zahl ist {1}", input, ergebnis);
            Console.WriteLine("Die Dauer der Berechnung betrug {0}", stopuhr.Elapsed.ToString("mm\\:ss\\.ff"));           
        }
    }
}


Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben