Problem: Primfaktorzerlegung mit while-Schleife

Cherry07

Mitglied
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;
}
 
Zuletzt bearbeitet:
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).
 

Neue Beiträge

Zurück