Daca se poate si niste explicatii...Complexitate (optima)...
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("date.in");
bool prim(int n)
{int d;
if(n<2)
return false;
if(n==2)
return true;
for(d=2;d<=n/2;d++)
if(n%d==0)
return false;
return true;
}
int main()
{
int x,k,p=1,ok=0,Min,Max,smin,pmin,smax,pmax;
f>>k;
while(f>>x)
{
if(prim(x))
{p=p*x;
if(ok==0)
{
Min=x;
Max=x;
ok=1;
}
if(Max<x)
Max=x;
if(Min>x)
Min=x;
}
}
int l=k-1,m=k-1;
smin=Min;
pmin=Min,
smax=Max;
pmax=Max;
for(int i=Min+1;i<=Max;i++)
if(l==0)
break;
else
if((p%i==0 && i%2==1) || i==2)
{
smin=smin+i;
pmin=pmin*i;
l--;
}
for(int j=Max-1;j>=Min;j--)
if(m==0)
break;
else
if((p%j==0 && j%2==1) || j==2)
{
smax=smax+j;
pmax=pmax*j;
m--;
}
cout<<"Suma a k celor mai mici numere prime este de"<<" "<<smin<<endl;
cout<<"Suma a k celor mai mari numere prime este de"<<" "<<smax<<endl;
cout<<"Produsul a k celor mai mici numere prime este"<<" "<<pmin<<endl;
cout<<"Produsul a k celor mai mari numere prime este"<<" "<<pmax;
return 0;
}
ASTA E BUNA:)