va rog ajutați mă pls dau coroană
Răspunsuri la întrebare
Răspuns:
#include <iostream>
int aflaRasturnatul(int numar);
bool estePrim(int numar);
int main() {
/* citim cele două numere a și b, sumaNrPrime o inițialzăm cu 0 */
/* „int primulNumar{}” e același lucru cu „int primulNumar = 0” */
int primulNumar{}, alDoileaNumar{}, sumaNrPrime{};
std::cout << "Introdu primul si al doilea numar (de ex. 2 14) >> ";
std::cin >> primulNumar >> alDoileaNumar;
/* după ce am citit cele două numere, pornim un for începând de la primul și iterăm atâta timp cât i este mai mic sau egal cu cel de al doilea număr */
for (int i{primulNumar}; i <= alDoileaNumar; i++) {
/* îi calculăm răsturnatul */
int rasturnatulNumarului{aflaRasturnatul(i)};
/* dacă răsturnatul numărului este prim adăugăm numărul la sumă */
if (estePrim(rasturnatulNumarului)) {
sumaNrPrime += i;
}
}
/* la final afișăm suma */
std::cout << "Suma numerelor ce au rasturnatul lor un numar prim este: "
<< sumaNrPrime << "\n";
return 0;
}
int aflaRasturnatul(int numar) {
/* de exemplu pentru 123 */
int numarRasturnat{};
while (numar) {
/* la prima iterație ultima cifră va fi egală cu 3 */
/* la a doua iterație ultima cifră va fi egală cu 2 */
/* la a treia iterație ultima cifră va fi egală cu 1 */
/* la a patra iterație ieșim din while deoarece numar = 0 */
int ultimaCifra{numar % 10};
/* la prima iterație numărul răsturnat va fi egal cu 0 * 10 + 3 deci 3 */
/* la a doua iterație numărul răsturnat va fi egal cu 3 * 10 + 2 deci 32 */
/* la a treia iterație numărul răsturnat va fi egal cu 32 * 10 + 1 deci 321 */
numarRasturnat = numarRasturnat * 10 + ultimaCifra;
/* și împărțim la 10 pentru a nu merge cu while-ul încontinuu */
numar /= 10;
}
/* și returnăm răsturnatul numărului */
return numarRasturnat;
}
bool estePrim(int numar) {
/* dacă numărul este 0 sau 1 returnăm false deoarece 0 și 1 nu sunt numere prime */
if (numar == 0 || numar == 1) {
return false;
}
/* dacă numărul se împarte la i returnăm false (deoarece se împarte la altceva înafară de 1 și el însuși) */
for (int i{2}; i <= numar / 2; i++) {
if (numar % i == 0) {
return false;
}
}
/* altfel returnăm true (numărul este prim) */
return true;
}