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
#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:
#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!