Guten Tag ! Ich habe bezüglich meines Studiums die Aufgabe ein Programm zum Thema Primfaktorzerlegung zu schreiben. Mein Problem ist nun, dass die Ausgabe wie folgt aussieht bsp: 20=2*2*5* gewünscht ist aber die Ausgabe 20=2*2*5 (ohne den letzten Mal Operator). Außerdem ist das Programm nicht gerade "kompakt". Danke schonmal im Voraus.
C:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long long kteiler(long long n)
{
long long teiler;
long long max;
if(n<=4)
{
return n;
}
else if(n%2==0)
{
return 2;
}
teiler=3;
max=sqrt(n)+1;
while(n%teiler!=0)
{
teiler +=2;
if(teiler>max)
{
teiler= n;
break;
}
}
return teiler;
}
void prim(long long n)
{
long long erg=1;
long long teiler;
printf("%d=",n);
teiler=kteiler(n);
erg=n/teiler;
printf("%d*",teiler);
while(teiler!=1){
teiler=kteiler(erg);
erg=erg/teiler;
if(teiler==1)
{
break;
}
printf("%d",teiler);
if(teiler)
printf("*");
}
}
int main() {
long long i;
long long teiler=1;
long long erg;
printf("Geben sie eine Zahl groesser 0 ein\n");
printf("Bei der Eingabe von 0 wird das Programm beendet\n");
scanf("%lld",&i);
if(i==0)
return 0;
else
prim(i);
return 0;
}
Zuletzt bearbeitet: