C# :: Aufgabe #326
3 Lösungen

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ß
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:
Hallo,
hier meine Lösung:
C#-Code
hier meine Lösung:

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"; } } } }
NET 5.x; C# 9.x
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 }
NET 5.x; C# 9.x; VS-2019
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" }; }