# Problem: Primfaktorzerlegung mit while-Schleife



## Cherry07 (17. November 2007)

Hallo,

bin gerade dabei ein C-Code zu schreiben, der die Primfaktorzerlegung bei einer natuerlichen Zahl durchfuehren soll. 
Mein Problem dabei ist, dass das Programm mir nur die geraden Zahlen richtig zerlegt und die ungeraden Zahlen jedoch nicht.

Kann mir da jemand vielleicht mal helfen.

LG
Cherry07
_____________________
/*Primfaktorzerlegung*/

# include<stdio.h>

int main (void)

{
    int x, a=2;

    printf("Geben Sie eine natuerliche Zahl ein: ");
    scanf("%d", &x);

    if ((x==0) || (x==1))
    {
               printf("Werteingabe unzulaessig, da x nicht 0 oder 1 sein darf.");
    }

    else
    {	
	 while (x%a==0)
 	   {
             x=x/a;
             printf("%d,", a);

         while (x%a!=0)
	      {
	           a++;	
          }      
       }

     if (x%a!=0)
     {
         a++;
         x=x/a;
         printf("%d,", a);

         a++;
     }
    }

return 0;
}


----------



## SymTec (17. November 2007)

Dein Problem liegt beim "while (x%a==0)": Hier ist beim ersten Durchlauf a==2. Eine ungerade Zahl erfüllt die Bedingung (x%2==0) nicht; somit wird die gesamte schöne while-Schleife übersprungen.

Ich selbst kann kein C, aber wenn du vor dem Ausdruck nochmal die Schleife

while (x%a!=0)
{
a++;
}

einfügst, ist das Problem gelöst (wenn auch nicht ideal).


----------



## Cherry07 (18. November 2007)

Hallo,

vielen Dank für die Hilfe. Das Programm läuft jetzt einwandfrei.

Gruß
Cherry


----------

