Liczba Irysowa to taka liczba naturalna, której suma cyfr danej liczby jest równa iloczynowi cyfr tej liczby. Innymi słowy przyjmując, że cyfra składa się z n cyfr kolejno od najbardziej znaczęcej: c1, c2,.. , cn to wtedy spełnia warunek: c1 + c2 + .. + cn = c1c2..cn.
Najmniejszą liczbą irysową jest 1. Innym przykładem jest liczba 123, gdzie 1+2+3 = 1·2·3. Warto zauważyć, że jeśli liczba n jest liczbą Irysową to wszystkie liczby powstałe z permutacji cyfr tej liczby też będą liczbami Irysowymi. Jest to cecha, która wynika z przemienności mnożenia oraz dodawania.
Kolejne liczby Irysowe można ustawić w następujący ciąg:
1, 2, 3, 4, 5, 6, 7, 8, 9, 22, 123, 132, 213, 231, 312, 321, 1124, 1142, ...
Sprawdzenie czy dana liczba jest liczbą Irysować sprowadza się do pobierania kolejnych cyfr z liczby, a następnie zwiększania sumy i przemnożenia iloczynu. Wynikiem działania funkcji jest porównanie obliczonej sumy oraz iloczynu.
W celu wypisania n pierwszych liczb Irysowych można skorzystać z poniższego fragmentu kodu:
Napisz funkcję szukajUnikalnychIrysowych(), która wypisze n pierwszych liczb Irysowych, ale bez permutacji liczb już wypisanych. Oznacza to, że przykładowo liczba 123 wyklucz z wypisania jej permutacji: 132, 213, 231, 312 oraz 321. Zakładamy, że spośród wszystkich permutacji zawsze wypisujemy najmniejszą wartość. Przykładowo dla n = 15 program ma wypisać: