In diesem Programm bekomme ich am Ende eine Gleitkommaausnahme. Es gibt zwei Hauptdateien, mit denen ich arbeite. Die erste ist die "main" unten aufgeführt:Ich bin mir nicht sicher, wo ich falsch liege. Ein Programm schreiben, um die Primfaktorzerlegung in c auszudrucken und zusammen damit zu üben
int main(){
int ans;
do{
printf("Enter an integer greater than 1:\n");
scanf("%d", &ans);
}while(ans <= 1);
printf("%d = ", ans);
int d = 2;
while(ans >= d){
if(ans == d){
printf("%d^%d", d, factor_power(ans, d));
ans = ans/(d^(factor_power(ans, d)));
}
else{
printf("%d^%d * ", d , factor_power(ans , d));
ans = ans/(d^(factor_power(ans, d)));
d++;
}
}
printf("\n");
return 0;
}
Die Datei, die die factor_power() -Methode enthält, ist hier:
int factor_power(int n, int d){
int p = 1;
do{
if(n % (d^p) == 0)
p ++;
}while(n % (d^(p+1)) == 0);
return p;
}
beide sind meine Header math.h und stdio.h. Ich bin einfach so verloren, wo die Gleitkommaausnahme herkommt. Das Programm soll wie die Primfaktoren drucken:
1200 = 2^4 * 3^1 * 5 * 2.
Amy Feedback wird sehr geschätzt.
'^' ist XOR in C. – BLUEPIXY
oh wow in Ordnung, wie Sie einen int-Wert von etwas bekommen zu einer Leistung von etwas anderes in C zu nehmen? Tut mir leid, wenn das dumm ist, ich fange gerade an zu lernen C – Dakota
ZB int ipower (intx, intn) {/ * x^n */ \t int ergebnis = 1; \t while (n> 0) { \t \t if (n & 1) \t \t \t Ergebnis * = x; \t \t x = x * x; \t \t n >> = 1; \t} \t Ergebnis zurückgeben; } ' – BLUEPIXY