Un număr „care aduce bucurie” – harsad (sau număr Niven), este un număr întreg divizibil cu suma
cifrelor sale.
Subprogramul harsad are doi parametri:
- k, prin care primește un număr natural (k[1,106]);
- n, prin care furnizează cel mai mare număr natural harsad mai mic sau egal cu k.
Scrieți definiția completă a subprogramului.
Exemplu: pentru k=2027, după apel, n=2025 (2+0+2+5=9, iar 2025 este divizibil cu 9).
#include <iostream>
using namespace std;
// Functie care calculeaza suma cifrelor unui numar
int sumaCifrelor(int x) {
int suma = 0;
while (x > 0) {
suma += x % 10; // Adauga ultima cifra
x /= 10; // Elimină ultima cifra
}
return suma;
}
// Subprogramul 'harsad' care furnizează cel mai mare număr Harsad mai mic sau egal cu k
void harsad(int k, int &n) {
for (n = k; n >= 1; n--) { // Parcurgem de la k până la 1
int suma = sumaCifrelor(n); // Calculăm suma cifrelor
if (n % suma == 0) { // Verificăm dacă numărul este divizibil cu suma cifrelor
return; // Dacă găsim un număr Harsad, ieșim din funcție
}
}
}
int main() {
int k, n;
cin >> k; // Citim valoarea lui k
harsad(k, n); // Apelăm subprogramul 'harsad'
cout << "Cel mai mare numar Harsad mai mic sau egal cu " << k << " este: " << n << endl;
return 0;
}