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:

#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:

#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]));
}