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

Să se afişeze primele n (n<=100) numere naturale care au exact 3 divizori,
unde n se citeşte de la tastatură.
Ex. pentru n=5 se afişează 4, 9, 25, 49, 121
va rog am nevoie de raspuns urgent

Răspunsuri la întrebare

Răspuns de Petruccinator
1

#include <iostream>

bool testare(const size_t n) {

bool test = false;

for (size_t i = 2; i <= (n >> 1); ++i)

 if (!(n % i)) {

  if (!test)

   test = true;

  else

   return false;

 }

return test;

}

int main() {

size_t n;

std::cin >> n;

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

 if (testare(i)) {

  std::cout << i << ' ';

  --n;

 }

}

Răspuns de boiustef
2

Răspuns:

#include <iostream>

using namespace std;

bool prim(int a) {

   int p=1, d;

   if (a<2) p=0;

   for (d=3; d*d<=a && p==1; d+=2) {

       if (a%d==0) p=0;

   }

   return p;

}

int main()

{

   int n,i,b,nr=0;

   cin >> n;

   if (n==1) cout << 2*2;

   else {

       cout << 2*2;

       nr=1;  b=3;

       while (nr<n) {

           if (prim(b)) {

               cout << " " << b*b;

               ++nr;

           }

           b+=2;

       }

   }

   return 0;

}

Explicație:

numai pătratul numărului prim are exact 3 divizori, ...

2^2, 3^2, 5^2, 7^2, 11^2, 13^2 ș.a.m.d.

Succese!

Alte întrebări interesante