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

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

Răspuns de pmarian98
1

#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

Alte întrebări interesante