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

Cerinta: Se dă un şir cu n elemente, numere naturale. Să se verifice dacă în şir există elemente prime.
Vreau sa stiu si eu ce nu e bine in acest algoritm de imi da 50pct

# include

using namespace std;

int main ()
{
int n, nr;
bool ok = 1;
cin >> n;
for (int i = 1; i <= n ; ++i) {
cin >> nr;
if (nr % i) {
ok = 0;
}
}
if (ok) {
cout << "DA";
}
else
cout << "NU";
return 0;
}

Răspunsuri la întrebare

Răspuns de numedeutilizator5
1

#include <iostream>

using namespace std;

int main()

{

   int n,nr,d,nd,d,i;

   bool ok=0;

   cin>>n;

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

   {

       cin>>nr;

       nd=0;

       for (d=2; d<=nr/2; d++)

           if (nr%d==0)

               nd++;

       if (nd==0)

           ok=1;

   }

   if (ok)

       cout << "DA";

   else

       cout << "NU";

   return 0;

}


numedeutilizator5: Ce observ ca faci tu, cauti daca numarul citit nu e divizibil cu i, si trebuie prim prim. Ca sa iti dau un exemplu, sa zicem ca al 3-lea numar citit e 7. 7%3=1, deci ok se face 0, si iti intra pe ramura cu else la sfarsit, deci "NU". Cu toate astea, 7 e prim.
toporvasile: ok ms mult
numedeutilizator5: Ca sa gasesti numarul prim, ii cauti divizorii de la 2 la nr/2, daca gasesti il adaugi, si la sfarsit, daca nd e 0, inseamna ca ai gasit un numar prim si ok se face 1. Chiar daca nu mai gasesti altul, ok ramane 1.
Alte întrebări interesante