Sunteți pe pagina 1din 2

Se da un sir de numere naturale.

Sa se determine un grup maxim de numere din sir


cu proprietatea ca sunt numere prime si suma lor este cel mult M dat.
#include <iostream>
#include <fstream>
using namespace std;
int m, a[100], n=1, s=0;
int Prim(int a)
{
if(a<2)
return 0;
if(a==2)
return 1;
for(int i=2; i*i<=a; i++)
if(a%i==0)
return 0;
return 1;
}
void Citire()
{
ifstream f("greedy.txt");
f >> m;
while (f >> a[n])
{
if(Prim(a[n]))
n++;
}
f.close();
n--;
}
void Ordonare()
{
int aux;
for(int i=1; i<n; i++)
for(int j=i+1; ja<=n; j++)
if(a[i]<a[j])
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
void Greedy()
{
for(int i=1; i<=n; i++)
{
if(s+a[i] <= m)
{
cout << a[i] << " ";
s=s+a[i];
}
}
}

int main()
{
Citire();
Ordonare();
Greedy();
return 0;
}

S-ar putea să vă placă și