C# :: Aufgabe #264 :: Lösung #3

5 Lösungen Lösungen öffentlich
#264

Summe alle Teiler einer positven Ganzzahl

Anfänger - C# von hollst - 18.06.2019 um 20:49 Uhr
Man schreibe eine Funktion SIGMA(n) mit n > 0 und ganzzahlig, wobei der Funktionswert sich
aus der Summe aller ganzzahligen, positven Teiler von n ergibt.

Beispiele (Zahl; Teiler; Funktionswert);
1; 1; 1
2; 1, 2; 3
4; 1, 2, 4; 7
5; 1, 5; 6
...
12; 1, 2, 3, 4, 6, 12; 28
...
100; 1, 2, 4, 5, 10, 20, 25, 50, 100; 217

Für 0 < n <= 200 sollte sich der beigefügte Pinplot ergeben.

Viel Spaß!
#3
vote_ok
von hollst (13980 Punkte) - 02.08.2019 um 20:35 Uhr
Quellcode ausblenden C#-Code
using static System.Console;
using System.Collections.Generic;

namespace Aufgabe_264
{
/*
    Man schreibe eine Funktion SIGMA(n) mit n > 0 und ganzzahlig, wobei der Funktionswert sich
    aus der Summe aller ganzzahligen, positven Teiler von n ergibt.

    Beispiele (Zahl; Teiler; Funktionswert);
    1; 1; 1
    2; 1, 2; 3
    4; 1, 2, 4; 7
    5; 1, 5; 6
    ...
    12; 1, 2, 3, 4, 6, 12; 28
    ...
    100; 1, 2, 4, 5, 10, 20, 25, 50, 100; 217
*/
    static class Program
    {
        static void Main()
        {
            int nmax = 100;
            for (var i = 1; i <= nmax; i++)
            {
                int sum;
                int[] temp = i.result(out sum);
                Write($"anzahl teiler: {temp.Length, 3}  i: {i,3} {sum,4} [");
                for (var j = 0; j < temp.Length; j++)
                    Write($"{temp[j],4}");
                WriteLine("]");
            }
            ReadKey();
        }

        static int[] result(this int n, out int sum)
        {
            List<int> erg = new List<int>();
            erg.Add(1);
            sum = 1;

            for (var i = 2; i <= n / 2; i++)
                if (n % i == 0)
                {
                    sum += i;
                    erg.Add(i);
                }
            if (n > 1)
            {
                erg.Add(n);
                sum += n;
            }
            return erg.ToArray();
        }
    }
}

Kommentare:

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

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