/// @file   main.cpp
/// @author Jens Gruschel
/// @date   2016-07-14
/// Primzahlen in Containern

#include <iostream>
#include <vector>

using std::cout;
using std::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;
}

std::vector<int> findPrimes(const int max)
{
    // alle Primzahlen bis zur gegebenen Obergrenze suchen
    // und in Ergebnisvektor packen
    std::vector<int> result;
    for (int i = 2; i <= max; ++i)
    {
        if (isPrime(i))
        {
            result.push_back(i);
        }
    }
    return result;
}

int main()
{
    // Primzahlen suchen...
    std::vector<int> primes = findPrimes(1000);

    // ...und ausgeben
    for (int i = 0; i < primes.size(); ++i)
    {
        cout << primes[i] << ", ";
    }
    cout << endl;

    return 0;
}