Se citește n numar natural nenul. Afișați:
a) cea mai mica si cea mai mare cifra a lui n
b) cate cifre impare are numărul n
c) media aritmetică a sumei cifrelor lui n
d) verificați dacă inversul lui n este număr prim
Va rog sa ma ajutați cat de mult posibil :)
Răspunsuri la întrebare
#include <iostream>
using namespace std;
bool numarPrim(int numar) // Functia returneaza doar true sau false - pentru ca nu avem nevoie de alte valori
{
if(numar < 2) // Daca numarul este mai mic ca si 2 (1, 0, -1, -2, etc) - acesta nu este prim
return false;
if(numar == 2) // Daca numarul este 2, acesta este prim
return true;
// for(int i = 2; i <= sqrt(numar); i++) - Optimizare in caz de nevoie
for(int i = 2; i <= numar / 2; i++) // Parcurgem toate numerele de la 2 la numar / 2
if(numar % i == 0) // Daca acesta se imparte exact la acel numar, inseamna ca nu este prim
return false;
return true;
}
int main() {
int n, ci, uc, min, max, ma, nr, s, inv;
//ci - cifre impare
//uc - ultima cifra
//min - cea mai mica cifra
//max - cea mai mare cifra
// ma = media aritmetica
// nr - nr de cifre ale nr
cout <<"n=";
cin>> n;
// nr de cifre impare = 0;
ci = 0;
min = n % 10;
max = min;
nr = 0;
s = 0;
inv = 0;
//luam cifra cu cifra si le numaram pe cele impare
while(n > 0)
{
// ultima cifra din nr
uc = n % 10;
s = s + uc;
nr ++;
inv = inv * 10 + uc;
if(uc % 2 == 1)
ci++;
if(uc > max)
max = uc;
if (uc < min)
min = uc;
// eliminam ultima cifra pe care am procesat-o mai sus
n = n/ 10;
}
cout<<"cifre impare = "<<ci<<endl;
cout<<"cifra minima = "<<min <<endl;
cout<<"cifra maxima = "<<max<<endl;
ma = s / nr;
cout<<"media aritmetica ma= "<<ma<<endl;
if(numarPrim(inv))
cout <<inv<<" este prim";
else
cout <<inv<<" NU este prim";
return 0;
}