PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Primfaktorzerlegung in C



wodka_cheery
23.11.2007, 19:00
Hallo,

schreibe grad ein C-Code zur Primfaktorzerlegung. Das Problem ist, dass es mir diejenigen Zahlen, die man nur durch sich selbst zerlegen kann nicht wirklich richtig ausrechnet, z. b. bei der 11 erscheint 11=11* - nach einem kurzem Moment sieht der Bildschirm dann folgendermaßen aus 1*1*1 bis unendlich.

Ich weiss allerdings nicht wo das Problem liegt.

Bitte um Hilfe.

Gruß
wodka_cherry

# include<stdio.h>
# include<math.h>

int main (void)
{
int x, a=2;

printf("Natuerliche Zahl x = ");
scanf("%d", &x);


/*Primfaktorzerlegung*/

printf("%d=", x);

if (x==2)
{
printf("%d", x);
}

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

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

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

if(x == a)
{
printf("%d\n", x);
break;
}
}
}

return 0;
}

fluchtpunkt
23.11.2007, 21:58
wie waers mit folgender Ergaenzung an der Stelle an der du pruefst ob die Zahl ungerade ist? Nach dem a++ quasi. Wenn bis zur eingegebenen Zahl das Modulo nie 0 ergeben hat ist die Zahl prim.


if (x == a)
{
printf("%d\n", x);
return 0;
}