Informatică, întrebare adresată de ap9122727, 8 ani în urmă

va rog ajutați mă pls dau coroană ​

Anexe:

Răspunsuri la întrebare

Răspuns de Apollyon
0

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;

}

Alte întrebări interesante