C# :: Aufgabe #326

3 Lösungen Lösungen öffentlich

Teilersumme natürlicher Zahlen

Anfänger - C# von JKooP - 04.10.2020 um 11:49 Uhr
Schreibe eine Methode/Funktion, mit der es möglich ist zu prüfen, ob es sich bei einer natürlichen Zahl um eine defiziente,
vollkommende oder abundante Zahl handelt.
Betrachtet wird die Summe aller Teiler ohne die Zahl selbst.

Beispiel Zahl 80:

1 + 2 + 4 + 5 + 8 + 10 + 20 + 40 = 106 --> abundant, da

Summe kleiner als Zahl --> defizient
Summe gleich Zahl --> vollkommen
Summe größer als Zahl --> abundant

Viel Spaß

Lösungen:

vote_ok
von Waldgeist (2310 Punkte) - 12.10.2020 um 14:17 Uhr
Hallo,

hier meine Lösung:

Quellcode ausblenden C#-Code
using System;
using System.Windows.Forms;

namespace Aufgabe_326___Teiersumme_natürliche_Zahlen
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Close();
        }

        public static int Berechnung(int Zahl)
        {
            int Summe = 0;

            for (int i = 1; i < Zahl; i++)
            {
                if ((Zahl % i) == 0)
                {
                    Summe = Summe + i;
                }
            }

            return Summe;
        }

        public int natürlicheZahl = 0;
        public int Teilersumme = 0;

        private void button1_Click(object sender, EventArgs e)
        {
            natürlicheZahl = Convert.ToInt32(textBox1.Text);

            Teilersumme = Berechnung(natürlicheZahl);

            textBox2.Text = Teilersumme.ToString();

            if (Teilersumme == natürlicheZahl)
            {
                textBox3.Text = "Dies ist eine vollkomene Zahl";
            }
            else if (Teilersumme < natürlicheZahl)
            {
                textBox3.Text = "Diese Zahl nennt man defizient";
            }
            else
            {
                textBox3.Text = "Diese Zahl nennt man abundant";
            }
        }
    }
}
vote_ok
von JKooP (18090 Punkte) - 04.01.2021 um 12:11 Uhr
NET 5.x; C# 9.x
Quellcode ausblenden C#-Code
using System;
using System.Linq;

Console.WriteLine(GetNumberType(496));
string GetNumberType(int n) => Enum.GetName(typeof(NumberType), Math.Sign(Enumerable.Range(1, n / 2).Where(x => n % x == 0).Sum() - n));

enum NumberType { Deficient_Number = -1, Perfect_Number = 0, Abundant_Number = 1 }
vote_ok
von JKooP (18090 Punkte) - 25.04.2021 um 17:58 Uhr
NET 5.x; C# 9.x; VS-2019
Quellcode ausblenden C#-Code
using System;

var n = 496;
Console.WriteLine($"{n} => {GetNumberType(n)}");

static string GetNumberType(int n)
{
    var s = 0;
    for (int i = n; i > 1; i--)
        s += n % i == 0 ? n / i : 0;

    return Math.Sign(s-n) switch
    {
        -1 => "deficient",
        0 => "perfect",
        _ => "abundant"
    };
}