Laden...

Befreundete Zahlen [C#]

Erstellt von Till-H vor 17 Jahren Letzter Beitrag vor 17 Jahren 6.529 Views
T
Till-H Themenstarter:in
75 Beiträge seit 2007
vor 17 Jahren
Befreundete Zahlen [C#]

Hallo,
ich habe ein Programm geschrieben, dass Befreundete Zahlen errechnet..
Befreundete Zahlen:
Die Echte Teilersumme der Zahl A ist die Zahl B und die Echte Teilersumme der Zahl B ist die Zahl A.
Guckt es euch einfach an..😉


using System;

namespace Befreundete_Zahlen1
{
	/// <summary>
	/// Klasse gibt nach Übergabe eines Integer an "Teiler.Summe" die Summe
	/// der echten Teiler aus.
	/// </summary>
	public class Teiler
	{
		public int Summe(int zahl){
		int intSumme = 0;
		int intmax = 0;
			//Zahl wird bis zur Hälfte durchsucht
			for(int i = 1;i<(zahl/2);i++)
			{
			  if (zahl % i == 0)
				{
					if (zahl/i == intmax)
					{
						break; 
						//Abbruchkriterium, falls die Zahlen sich wiederholen
					}//of if
                   intmax = i;
                     intSumme = intSumme + i;
			 	intSumme = intSumme + zahl/i;
				}//of if

			}//of for
			intSumme = intSumme - zahl; 
			//Um Summe der Echten Teiler zu erhalten wird die Zahl von
			//der Teilersumme abgezogen			
			return intSumme;
		}//of Summe()
	}
}

Klasse, die die Teilersumme berechnet.


using System;

namespace Befreundete_Zahlen1
{
	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	class Class1
	{
		
		[STAThread]
		static void Main(string[] args)
		{
		int intAnzahl = 110000;
		int[] TeilerArray = new int[intAnzahl+1];
		Teiler Teiler = new Teiler();

		// ENDE DER DEKLARATION

			for(int i = 1;i<=intAnzahl;i++)
			{
				TeilerArray[i]=Teiler.Summe(i);
			//TeilerArray wird mit Teilersummen gefüllt
			//ArrayPos --> Teilersumme
			}//of for
			for(int i = 1;i<=intAnzahl;i++)
			{
				if(TeilerArray[i] < intAnzahl & TeilerArray[i] > 0) 
				{
					if(i == TeilerArray[TeilerArray[i]] & TeilerArray[i] != i)
					{
						Console.WriteLine("Befreundete Zahlen {0} und {1}",i,TeilerArray[i]);
						TeilerArray[i]=0;
						//Befreundete Zahlen werden gesucht. Eine der beiden Zahlen wird
						//auf 0 gesetzt um Doppelfunde zu vermeiden
					}//of if(innen)
				}//of if(außen)
			}//of for
			Console.WriteLine("Fertig!");
			Console.ReadLine();
		}//of Main
	}
}

Hauptmethode zum Suchen der Zahlen.

Die .exe im Anhang benötigt einige Zeit(ca 1Minute) um ein Ergebnis zu finden

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Till-H,

kleine Ergänzung bzw. Hintergrundinfo: http://de.wikipedia.org/wiki/Befreundete_Zahl

herbivore

T
Till-H Themenstarter:in
75 Beiträge seit 2007
vor 17 Jahren

Hallo herbivore,

ja..hab ich auch schon gesehen.. aber wollte es einfach mal so ohne diese Sätze programmieren..
trotzdem danke 🙂