Informatică, întrebare adresată de alexandrualbert75, 8 ani în urmă

Cerinţa
Se dă un şir cu n elemente, numere naturale. Să se verifice dacă în şir există elemente prime.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale şirului.

Date de ieşire
Programul afișează pe ecran mesajul DA, dacă şirul conţine elemente prime, respectiv NU în caz contrar.

Restricţii şi precizări
1 ≤ n ≤ 200
elementele şirului vor fi mai mici decât 1.000.000.000

Exemplu
Date de intrare

5
21 8 6 10 8
Date de ieșire

NU

asta e codul meu si nu merge:
#include
using namespace std;


int main()
{
int v[201], i, n, ok, d;

cin >> n;
for (i = 1; i <= n; i++)
cin >> v[i];
ok = 1;
for (i = 1; i <= n; i++)
{
for (d = 2; d <= v[i] / 2; d++)
if (v[i] % d == 0)
{
ok = 0;
break;
}

}
if (ok == 0)
cout << "DA";
else
cout << "NU";

return 0;

}


boiustef: dacă ok==0 atunci DA ?

Răspunsuri la întrebare

Răspuns de boiustef
0

#include <iostream>

using namespace std;

int main()

{

   int n, num, i, gasit=0;

   cin >> n;

   for (i=1; i<=n; ++i)

   {

       cin >> num;

       if (!gasit)

       {

           int d, e_prim=1;

           if (num==0 || num==1) e_prim=0;

           if (num>2)

           {

               if (num%2==0) e_prim=0;

               for (d=3; d*d<=num; d+=2)

                    if (num%d==0) { e_prim=0; break; }

           }

           if (e_prim==1) gasit=1;

       }

   }

   if (gasit) cout << "DA";

   else cout << "NU";

   return 0;

}

Alte întrebări interesante