Răspuns :
Răspuns:
#include <iostream>
using std::cout, std::cin, std::endl;
// Funcția returnează oglinditul numărului
static int creeazaOglindit(int numar) {
int oglinditulNumarului{}, ultimaCifra;
// cât timp numărul este diferit de 0
while (numar) {
// luăm ultima cifră a numărului
ultimaCifra = numar % 10;
// și o adăugăm la oglindit
oglinditulNumarului = oglinditulNumarului * 10 + ultimaCifra;
numar /= 10; // împărțim numărul la 10 ca while-ul să nu ruleze la infinit
}
return oglinditulNumarului; // la final returnăm oglinditul creat
}
// Funcția returnează true dacă numărul este prim, false altfel
static bool estePrim(const int& numar) {
// 0 și 1 nu sunt prime
if (numar == 0 || numar == 1) return false;
// dacă numărul se împarte la altceva înafară de 1 și el însuși înseamnă că nu e prim
for (int i = 2; i <= numar / 2; ++i)
if (numar % i == 0) return false;
// altfel înseamnă că e prim
return true;
}
int main() {
int n, *numere, sumaNrPrime{}, nrOglindit;
cout << "Introdu n (de ex. 5) >> ";
cin >> n;
// Creăm vectorul de dimensiune N
numere = new int[static_cast<size_t>(n)];
// Citim numerele-n vector
for (int i = 0; i < n; i++) {
cout << "numere[" << i << "] >> ";
cin >> numere[i];
}
// Parcurgem vectorul și dacă oglinditul numărului este prim adăugăm numărul la sumă
for (int i = 0; i < n; ++i) {
nrOglindit = creeazaOglindit(numere[i]);
if (estePrim(nrOglindit)) sumaNrPrime += numere[i];
}
// Afișăm suma numerelor ce au oglinditul prim
cout << "Suma numerelor prime oglindite este >> " << sumaNrPrime << endl;
// La final eliberăm memoria
delete[] numere;
return 0;
}
Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!