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 între1
și1.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; }