fbpx

Problema #436 – PrimMaxim – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Să se scrie un program care citeşte de la tastatură un număr natural n şi apoi un şir de n numere naturale şi determină cel mai mare număr prim din șir și de câte ori apare.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale.

Date de ieşire

Programul afișează pe ecran numerele M nrap, separate printr-un spațiu, reprezentând cel mai mare număr prim din șir și de câte ori apare acest număr în șir.

Restricţii şi precizări

  • 0 < n < 1000
  • cele n numere citite vor fi mai mici decât 2.000.000.000
  • pentru toate testele de evaluare, datele de intrare vor conține cel puțin un număr prim

Exemplu

Intrare

5
8 7 11 9 11

Ieșire

11 2
#include <bits/stdc++.h>
using namespace std;

int prim(int n);

int main ()
{
    int n;
    cin >> n;
    int a[1001];
    int cnt=0,max=0;
    for (int i = 0 ; i < n ; ++i)
    {
        cin >> a[i];
        if(prim(a[i]))
        {
            if (a[i] >= max)
                max=a[i];
        }
    }
    for (int i = 0 ; i < n; ++i)
    {
        if (a[i]==max)
            cnt++;
    }
    cout << max << ' ' << cnt;
    return 0;
}
int prim(int n)
{
    int cnt=0;
    for (int i = 1 ; i * i <= n; ++i)
    {
        if (n%i==0)
            cnt+=2;
        if (i*i==n)
            cnt--;
    }
    if (cnt == 2)
        return 1;
    else
        return 0;
}
Comentarii

S-ar putea sa iti placa