Se citeste un sir de numere intregi pana la intalnirea cifrei 0. Sa se afiseze media aritmetica a numerelor pozitive / prime / perfecte din sir. In C daca se poate.Multumesc !!
Răspunsuri la întrebare
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int x, numarPrime = 0, sumaPrime = 0;
while(cin>>x && x!=0){
// verificam daca x este prim
int OK = 1;
if(x % 2 == 0 or x < 3) { // singurul numar prim divizibil cu 2 si mai mic ca 3 este numarul 2
OK = (x == 2); // OK ia valoarea 1 daca x este egal cu 2, respectiv 0 in caz contrar
}
else {
// pentru a determina eficient daca un numar este prim, este de ajuns sa mergem de la 3 pana
// la radical din numar, din 2 in 2
int d = 3, radical = sqrt(x);
while(d <= radical and OK == 1) {
if(x % d == 0) {
OK = 0; // x nu este prim
}
else {
d += 2; // incrementam d cu 2 unitati
}
}
}
if(OK == 1) { // x este prim
numarPrime++;
sumaPrime += x;
}
}
cout <<(double) sumaPrime / numarPrime;
return 0;
}
//ti-am pus rezultatul precis