C++ :: Aufgabe #331

1 Lösung Lösung öffentlich

Divisionsrest (Modulo) aus einer Zahl und ihrer Ziffern

Anfänger - C++ von JKooP - 11.02.2021 um 19:17 Uhr
Ziel soll es sein, eine beliebige Integer-Zahl dahingehend zu überprüfen,
ob die Zahl dividiert durch jede ihrer Ziffern immer den Rest 0 ergibt (Modulo = mod).

Dazu soll eine Methode/Funktion erstellt werden, die zwei Integer-Zahlen (Min, Max) aufnimmt
und alle Lösungen im angegebenen Bereich (Min-Max) als Integer-Array zurückgibt.

Beispiel:

Min = 1
Max = 20
Lösung: = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15 ]

Erläuterung (Auszug):

Zahl 9: 9 mod 9 = 0 => true (gilt für jede einstellige Zahl)
Zahl 10: 10 mod 1 = 0; 10 mod 0 = 10 => false, da nicht beide den Rest 0 haben
Zahl 12: 12 mod 1 = 0; 12 mod 2 = 0 => true
Zahl 14: 14 mod 1 = 0; 14 mod 4 = 2 => false, da nicht beide den Rest 0 haben

Viel Spaß

Lösungen:

vote_ok
von JKooP (18090 Punkte) - 23.04.2021 um 22:00 Uhr
C++ 17
Quellcode ausblenden C-Code
#include <iostream>

bool is_num_mod_of_its_digits(int n) {
    auto m{ n };
    while (m > 0) {
        auto t{ m % 10 };
        if (t == 0 || n % t != 0)
            return false;
        m /= 10;
    }
    return true;
}

void print_nums(int min, int max) {
    for (auto i = min; i <= max; i++)
        if(is_num_mod_of_its_digits(i))
            std::cout << i << ", ";
}

int main() {
    print_nums(1, 100);
}