Răspuns :
#include <iostream>
#include <vector>
bool is_prime(int n){ // standardul IEEE 754 nu garanteaza numerele reale precise...
n = std::abs(n);
for(int L = n/2, i = 2; i <= L; ++i)
if(!(n % i))
return false;
return true;
}
int main(){
std::vector<float> vec;
float mx = 0;
int n, fr = 0;
std::cout << "Introduceti marimea n: ";
std::cin >> n;
vec.resize(n);
std::cout << "Introduceti valorile:\n";
for(int i = 0; i < n; ++i){
std::cin >> vec[i];
if(vec[i] == mx)
++fr;
else if(is_prime(vec[i]) && mx < vec[i]){
mx = vec[i];
fr = 1;
}
}
std::cout << "Numarul de aparitii al celui mai mare numar prim (numarul maxim ";
switch(fr){
case 0:
std::cout << "indefinit)\n";
break;
default:
std::cout << mx << "): " << fr << '\n';
}
return 0;
}
Răspuns:
#include <iostream>
using namespace std;
int main()
{
int n, i, p, num, k=0, v[100];
float x;
cin >> n;
for (i=1; i<=n; ++i)
{
cin >> x;
if (x==(int)x && x>0)
{
p=1; num=(int)x;
if (num<2)p=0;
else
{
if (num==2) p=1;
else
{
if (num%2==0) p=0;
else
{
for (int d=3; d*d<=num; d+=2)
{
if (num%d==0)
{
p=0; break;
}
}
}
}
}
if (p)
{
v[k++]=num;
}
}
}
for (i=0; i<k-1; i++)
{
for (int j=j+1; j<k; j++)
{
if (v[j]<v[i]) swap(v[i],v[j]);
}
}
num=v[0];
int ap=1, apmax=1;
for (i=1; i<k; i++)
{
if (v[i]==v[i-1]) ++ap;
else
{
if (ap>apmax)
{
num=v[i-1]; apmax=ap;
ap=1;
}
}
}
if (ap>apmax)
{
num=v[k-1];
}
cout << num;
}
Explicație:
poate înțelegi ata, fprp funcții... succese!