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

3 Lösungen Lösungen öffentlich
#86

Giuga-Zahlen berechnen

Anfänger - C# von Gustl - 13.02.2015 um 12:42 Uhr
Eine natürliche Zahl n ist eine Giuga-Zahl, wenn alle ihre Primteiler p den Wert n/p - 1 teilen.

Schreibe ein Programm welches alle Giuga-Zahlen bis zu einer festen Obergrenze ausgibt.

Erläuterung zu einer Giuga-Zahl findest du hier: Wikipedia
#2
vote_ok
von Robi (390 Punkte) - 06.01.2016 um 09:51 Uhr
Nicht schön, aber funktioniert. Das Programm sucht erst für jeden Schleifendurchgang alle Primfaktoren und schaut dann, ob es eine Giuga Zahl ist..

Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;

namespace Übungen_Zu_CSharp_86
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Obergrenze eingeben: ");
            long Obergrenze = long.Parse(Console.ReadLine());

            for (double i = 2; i <= Obergrenze; i++)
            {
                int primzahl = 2;
                List<int> primfaktoren = new List<int>();
                double iTemp = i;
                int tempPrimfaktoren = 1;

                do
                {
                    if (iTemp % primzahl == 0)
                    {
                        tempPrimfaktoren = 1;
                        iTemp = iTemp / primzahl;
                        primfaktoren.Add(primzahl);
                        foreach (int item in primfaktoren)
                            tempPrimfaktoren = tempPrimfaktoren * item;
                    }
                    else
                    {
                        while (iTemp % primzahl != 0)
                        {
                            primzahl++;
                        }
                    }
                }
                while (tempPrimfaktoren != i);

                bool GiugaZahl = false;

                foreach (double item in primfaktoren)
                {
                    if ((i / item - 1) == 0)
                    {
                        GiugaZahl = false;
                        break;
                    }
                    else
                    {
                        if ((i / item - 1) % item == 0)
                            GiugaZahl = true;
                        else
                        {
                            GiugaZahl = false;
                            break;
                        }
                    }
                }

                if (GiugaZahl)
                    Console.WriteLine("Giuga Zahl :" + i);
            }
            Console.ReadKey();
        }
    }
}

Kommentare:

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

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