/// @file   main.cpp
/// @author Jens Gruschel
/// @date   2016-07-14
/// Hauptprogramm zur Ausgabe von Primzahlen

#include "functions.h"
#include <iostream>

using std::cout;
using std::endl;

int main()
{
    // Primzahlen ausgeben
    for (int i = 2; i <= 100; ++i)
    {
        if (isPrime(i))
        {
            cout << i << ", ";
        }
    }
    cout << endl;

    return 0;
}



/// @file   functions.h
/// @author Jens Gruschel
/// @date   2016-07-14
/// Deklaration von Funktionen zur Bestimmung
/// von Teilern und Primzahlen

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

void printDivisors(const int n);
int countDivisors(const int n);
bool isPrime(const int n);

#endif // FUNCTIONS_H



/// @file   functions.cpp
/// @author Jens Gruschel
/// @date   2016-07-14
/// Implementierung von Funktionen zur Bestimmung
/// von Teilern und Primzahlen

#include <iostream>

using std::cout;
using std::endl;

void printDivisors(const int n)
{
    // alle Zahlen zwischen 1 und n auf Teilbarkeit pruefen
    // und gegebenenfalls ausgeben
    for (int i = 1; i <= n; ++i)
    {
        if (n % i == 0)
        {
            cout << i << ", ";
        }
    }
    cout << endl;
}

int countDivisors(const int n)
{
    // alle Zahlen zwischen 1 und n auf Teilbarkeit pruefen
    // und gegebenenfalls zaehlen
    int result = 0;
    for (int i = 1; i <= n; ++i)
    {
        if (n % i == 0)
        {
            ++result;
        }
    }
    return result;
}

bool isPrime(const int n)
{
    // eine Zahl ist genau dann eine Primzahl,
    // wenn sie zwei Teiler besitzt: 1 und sich selbst
    return countDivisors(n) == 2;
}