1.5 Aufgabe (Zusatz): Primzahlzerlegung
1.5 Aufgabe (Zusatz): Primzahlzerlegung#
Implementieren sie eine Funktion, welche eine Zahl in Primzahlfaktoren zerlegt und diese ausgibt. Benutzen Sie dabei in zwei verschiedenen Varianten einen
einen iterativen Algorithmus und dann
einen rekursiven Algorithmus.
Hinweise:
Eine Zahl ist durch eine andere teilbar, wenn der Teilrest der Division “0” ergibt (operator
%
)Eine Primzahl kann mehrfach vorkommen.
Wählen Sie eine geeignete Abbruchbedingung.
#include <stdlib.h>
#include <iostream>
void printPrimes(int number)
{
// ...
}
int main(int argc, const char* argv[])
{
printPrimes(atoi(argv[1]));
}
Folgend eine mögliche Lösung als iterative Funktion:
Click to show
#include <stdlib.h>
#include <iostream>
void printPrimes(int number)
{
for (int i = 2; i <= number; )
{
if (number % i == 0)
{
number /= i;
std::cout << i << std::endl;
}
else
{
++i;
}
}
}
int main(int argc, const char* argv[])
{
printPrimes(atoi(argv[1]));
}
Folgend eine Lösung für eine rekursive Implementierung:
Click to show
#include <stdlib.h>
#include <iostream>
void printPrimes(int number)
{
for (int i = 2; i <= number; ++i)
{
if (number % i != 0)
continue;
std::cout << i << std::endl;
return printPrimes(number / i);
}
}
int main(int argc, const char* argv[])
{
printPrimes(atoi(argv[1]));
}