problema in C sau C++
Se da un numar natural. Sa se afiseze cel mai apropiat numar prim față de n.
(programul va contine cel putin un subprogram)
exemplu: n=24 se va afisa 23, pentru n=26 se va afisa 29.
rossetta:
ce trebuie sa afisezi daca n e prim? care este limita maxima a lui n?
Răspunsuri la întrebare
Răspuns de
1
bool isPrim(int);
int main()
{
int n=26;
int r=0;
for (int i=1; i<n && r==0; i++){
if (isPrim(n+i)) r=n+i;
else if (isPrim(n-i)) r=n-i;
}
cout << r;
return 0;
}
bool isPrim(int n){
if (n/2*2==n) return false;
if (n/3*3==n) return false;
int i=5; int in=2;
while (i<n){
if (n/i*i==n) return false;
i=i+in;
if (in==2) in=4; else in=2; // 5 7 11 13 17 19 23 25 etc.
}
return true;
}
int main()
{
int n=26;
int r=0;
for (int i=1; i<n && r==0; i++){
if (isPrim(n+i)) r=n+i;
else if (isPrim(n-i)) r=n-i;
}
cout << r;
return 0;
}
bool isPrim(int n){
if (n/2*2==n) return false;
if (n/3*3==n) return false;
int i=5; int in=2;
while (i<n){
if (n/i*i==n) return false;
i=i+in;
if (in==2) in=4; else in=2; // 5 7 11 13 17 19 23 25 etc.
}
return true;
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă