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

Salut !

Am intrat intr-un bloc mental, am nevoie de o solutie la o problema.

Problema arata cam asa. "Se dă un număr x. Se cere să se afișeze al x-lea număr prim."

Prin urmare, in functie de cat de mare va fi durata de viata a loop-ului, sa se afiseze ultimul numar prim.


ioncotorobaimaozgvrc: da un exemplu de date intrare.iesire
rossetta: cat este x maxim si care este limita de timp ?
Pregatire80: sa spunem ca x este 3, valoare de iesire va trebui sa fie 5.
NuPotSaStiuTot: este 5
Pregatire80: si cum faci programul ca sa iti dea 5??

Răspunsuri la întrebare

Răspuns de NuPotSaStiuTot
0
#include <iostream>
using namespace std;
bool isPrim(int n){
 if (n!=2 && n%2==0) return false;
 if (n != 3 && n%3==0) return false;
int i=5; int in=2;
while (i*i<n){
  if (n%i==0) return false;
 i=i+in;
 in=6-in;
} return true;
}

int main(){
 int x,y,z;
cin>>x;
y=0;
z=1;
while (y<x){
 z++; // inceput este 2
 if (isPrim(z))
  y++;
}
cout << z;
return 0;
}

Pregatire80: oh, scuze, nu am dat mai jos, multumesc
Pregatire80: Nu imi da chiar rezultatul corect, de exemplu, 49 nu este numar prim, dar il afiseaza, insa foarte interesanta abordarea, multumesc pentru ideei.
rossetta: Intr-adevar functia da erori uneori. De ex pentru 25 si pentru 49 returneaza true. Se poate repara usor daca modifici conditia din while
rossetta: while ( i * i <= n)
NuPotSaStiuTot: corect <=
Alte întrebări interesante