Informatică, întrebare adresată de MadalinaMadutaa, 9 ani în urmă

Cerinţa
Să se scrie un program care citește de la tastatură un număr natural n și verifică dacă este prim.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieşire
Programul afișează pe ecran mesajul DA, dacă n este număr prim, respectiv NU în caz contrar.

Restricţii şi precizări
0 ≤ n ≤ 1.000.000.000
un număr natural este prim dacă are exact doi divizori distincți: 1 și el însuși.



Exemplu
Intrare

17
Ieșire

DA

Răspunsuri la întrebare

Răspuns de artur99
1
#include <iostream>
using namespace std;

int main(){
    int n, i, prim=1;
    cin>>n;
    //Căutăm divizorii de la 2 la jumătatea numărului (nu există divizori între n/2 și n)
    //Dacă găsim vreunul, înseamnă că numărul nu este prim 
    for(i=2;i<=n/2;i++){
        if(n % i == 0){
            prim = 0;
            break;
        }
    }
    if(prim)
        cout<<"DA";
    else
        cout<<"NU";
}

artur99: Dacă ai nevoie de viteză mai mare la rulare, se pot face câteva optimizări.
MadalinaMadutaa: Din pacate, imi da doar 60 pct
MadalinaMadutaa: https://s23.postimg.org/k4bex1m23/brainly.png
Răspuns de express
2
#include <iostream>
using namespace std;
int n, i;
bool prim = true;
int main()
{
    cin >> n;
    if ((n == 0) || (n == 1)) { cout <<"NU"; return 0; }
    for(i = 2; i * i <= n; i++)
     if(n % i == 0)
     {
         prim = false;
         break;
     }
    if (prim) cout << "DA";
         else cout << "NU";
    return 0;
}


MadalinaMadutaa: Multumesc!
MadalinaMadutaa: ce inseamna bool ?
express: tipul logic...o variabila de acest tip se incarca cu true sau false...este doar in C++
MadalinaMadutaa: aa. ok. Multumesc frumos!
Alte întrebări interesante