/* Definieren Sie folgende Funktionen für natürliche Zahlen und testen Sie sie
solange, bis eine '0' eingegeben wird:
- 1 - ein - Einlesen von zwei natürlichen Zahlen.
- 2 - div - Ausführen der ganzzahligen Division (Enthaltensein und
      Rest). Berechnen Sie a div b und b div a.
      Hinweis: div() ist eine vordefinierte Funktion und liefert Quotient und
      Divisionsrest als Typ struct div_t{ int quot; int rem; } zurück
- 3 - teiler - Ausgeben aller Teiler einer Zahl. Geben Sie damit alle Teiler
      von a und alle Teiler von b aus
- 4 - ggt - Berechnen des groessten gemeinsamen Teilers von a und b. Hinweis: div
- 5 - ggt_e - Berechnen des groessten gemeinsamen Teilers von a und b nach dem Euklidischen Algorithmus (ca. 300 v.Chr. aufgestellt: zur Bestimmung des ggt zwischen zwei Zahlen x und y tue folgendes: solange x ungleich y ist, wiederhole; wenn x>y dann ziehe y von x ab und weise das Ergebnis x zu, andernfalls ziehe x von y ab und weise das Ergebnis y zu. Wenn x=y ist, dann ist x bzw. y der ggt.)
- 6 - prim - Zerlegung einer Zahl in Primfaktoren. Für a und b testen!
- 7 - kgv - Berechnen des kleinsten gemeinsamen Vielfachen zweier Zahlen.
------------------------------------------------------------------------------*/
#include <stdlib.h>
void ein( int *a, int *b)
{ do{ printf("\n Zwei natuerliche Zahlen (z.B. 33 und 66): ");
      scanf("%i %i", a, b);
      if( *a <0) *a=-*a; if(*b<0)*b=-*b;
  }while( *a * (*b)<0 );
}
void alle_teiler( int z)
{  int i; div_t s;
   printf("\n alle Teiler von %i: ", z);
   for( i=1; i<=z; i++)
   {                // if(z%i==0) printf("%i, ", i);
     s= div( z, i);  if( s.rem==0)printf("%i, ", i);
     if( z==0) printf("\n alle natuerlichen Zahlen!");
   }
}
int main()
{ int m, n;   div_t s;
  ein( &m,&n);          printf("\n m= %i, n= %i", m, n);
  s= div( m, n);        printf("\n %i / %i = %i Rest %i", m, n, s.quot, s.rem);
  s= div( n, m);        printf("\n %i / %i = %i Rest %i", n, m, s.quot, s.rem);
  alle_teiler( m);
  alle_teiler( n);

  printf("\n"); system("PAUSE");  return 0;
}
