fbpx

Problema #381 – aprim2 – Rezolvari PBInfo

de Mihai-Alexandru

Un număr natural se numește aproape prim dacă poate fi scris ca produs de două numere naturale prime distincte.

Cerinţa

Se citește un număr natural n și apoi n numere naturale. Să se determine cel mai mare număr aproape prim dintre cele date, și de câte ori apare.

Date de intrare

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

Date de ieşire

Programul afișează pe ecran numere M și C, separate prin exact un spațiu, reprezentând cel mai mare număr aproape prim dintre cele date și numărul său de apariții.

Restricţii şi precizări

  • 1 ≤ n ≤ 100
  • cele n numere citite sunt cuprinse între 1 și 1.000.000.000

Exemplu

Intrare

6
35 55 12 6 25 50

Ieșire

55 1
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int prim (int n)
{
    if (n==0 || n==1) return 0;
    if(n==2) return 1;
    if(n%2==0) return 0;
    for (int i=3;i*i<=n;i += 2)
        if(n%i==0) return 0;
    return 1;
}
int aproapeprim(int n)
{
    int cate=0;
    for(int i=1;i*i<=n;i++)
         {
            if(n%i==0)
            {
                if(prim(i))
                {
                    int y=n/i;
                    if(prim(y))cate++;
                    if(i*i==n) cate--;

                }
            }


         }
         if(cate>0) return 1;
         return 0;
}
int main()
{
    long long n,x,cate=0,q,maxim=-1;
     cin>>n;
     for(int i=1;i<=n;i++)
     {
         cin>>x;
         if(aproapeprim(x))
         {
             if(x>maxim)
             {
                 maxim=x;
                 cate=1;
             }
             else
                if(x==maxim)
             {
                 cate++;
                 maxim=x;
             }
         }
     }
     cout<<maxim<<" "<<cate;
    return 0;
}
Comentarii

S-ar putea sa iti placa