Un număr natural nenul este prim, dacă are exact doi divizori (ex. 7).
Un număr natural nenul se va numi pătrat prim, dacă este pătratul unui număr prim (ex. 49 = 7 * 7).
Un număr natural nenul se va numi aproape prim, dacă este produsul a două numere prime distincte (ex. 10 = 2 * 5).
Un număr natural nenul ce nu se încadrează în niciuna din cazurile de mai sus, se numeşte compus (ex. 8=2*2*2, 100=2*2*5*5).
Se citeşte un număr natural n. Să se identifice din ce categorie de mai sus face parte.
pls in c++ fara vectori
dau coroana


Răspuns :

#include <iostream>

using namespace std;

int main() {

int n, ndiv=0;

bool patrat = 0, aproapeprim = 0;

cout << "Introduceti n :";

cin >> n;

int div = 0;

for (int i = 1; i <= n / 2; i++) {

 if (n%i == 0) {

  ndiv++;

  div = i;

 }

 if (i*i==n)

  patrat = 1;

}

 

if (ndiv == 3) {

 aproapeprim = 1;

 int div2 = n / div;

 for (int j = 2; j <= div / 2; j++) {

  if (div%j == 0)

   aproapeprim = 0;

 }

 for (int j = 2; j <= div2 / 2; j++) {

  if (div2%j == 0)

   aproapeprim = 0;

 }

}

cout << endl;

if (ndiv == 1) cout << "Numarul e prim";

else if (patrat) cout << "Numarul e patrat perfect";

else if (aproapeprim == 1 ) cout << "Numarul e aproape prim";

else cout << "Numarul e compus";

return 0;

}

Vezi imaginea ANDREI750238