using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Collections;

namespace Primfaktoren
{
   class Program
   {
      static void Main(string[] args)
      {
         int zahl;                              // zu zerlegende Zahl
         ArrayList teiler = new ArrayList();    // Liste der ermittelten Teiler
         
         // Zahl einlesen
         Console.Write("Geben Sie eine Zahl ein, die in ihre Teiler zerlegt werden soll: ");
         zahl = int.Parse(Console.ReadLine());
         
         // Zahl zerlegen
         SucheTeiler(zahl, ref teiler);

         // Ergebnis ausgeben
         Console.Write("Die Teiler von {0} lauten:", zahl);
         foreach (int i in teiler)
            Console.Write(" {0}", i);
         Console.WriteLine();
      }

      /// <summary>
      /// Sucht alle Teiler einer Zahl. Die Funktion arbeitet rekursiv.
      /// </summary>
      /// <param name="zahl">Zahl, deren Teiler gesucht werden sollen.</param>
      /// <param name="teiler">ArrayListe, die die Teiler aufnimmt.</param>
      static private void SucheTeiler(int zahl, ref ArrayList teiler)
      {
         for (int i = 2; i < zahl; i++)
         {
            if ((zahl % i) == 0)                            // ist i ein Teiler ?
            {
               teiler.Add(i);                               // ja: Teiler in Liste aufnehmen
               SucheTeiler(zahl / i, ref teiler);           //     Rest der Zahl weiter zerlegen
            }
         }
      }
   }
}
