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
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";
}
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.
Răspuns de
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;
}
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;
}
Alte întrebări interesante
Evaluare Națională: Lb. Română ,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă