Numere prime <=n
Last Updated: Aug 08 2014 10:49, Started by
Cantafford92
, Aug 08 2014 09:12
·
0
#1
Posted 08 August 2014 - 09:12
Salut,
Doresc sa scriu un program c++ care sa returneze toate numerele prime <=n unde n este dat de user(fara 2). Asta am scris: #include <iostream> using namespace std; int main() { int n,i,j; cout << "Baga numar: "; cin >> n; for(i=1; i<=n; i++) for(j=3; j<i/2; j++) { if(i%j!=0) cout << j; } } Sunt incepator deci nu imi dau seama ce am gresit. Ajutor, va rog. Multumesc! Edited by Cantafford92, 08 August 2014 - 09:25. |
#2
Posted 08 August 2014 - 09:19
de ce testezi incepand cu 3 ?
si revezi ce inseamna un numar prim. Un numar e prim daca are DOAR 2 divizori, pe 1 si pe el insusi. |
#3
Posted 08 August 2014 - 09:23
yonut_a, on 08 august 2014 - 09:19, said:
de ce testezi incepand cu 3 ? si revezi ce inseamna un numar prim. Un numar e prim daca are DOAR 2 divizori, pe 1 si pe el insusi. Ce este gresit aici? for(j=3; j<i/2; j++) { if(i%j!=0) cout << j; }Daca j pleaca de la 3 pana la i/2, atunci cand i nu se imparte exact la j niciodata, nu ar trebui ca j sa fie numar prim? Edited by Cantafford92, 08 August 2014 - 09:24. |
#4
Posted 08 August 2014 - 09:29
Cantafford92, on 08 august 2014 - 09:23, said:
Am testat incepand cu 3 pentru ca am vrut sa afisez toate numerele prime mai mari ca 1, fara numarul 2. Asta ai vrut, doar ca ai tu iei divizorii incepand cu 3 nu numerele. Cantafford92, on 08 august 2014 - 09:23, said:
Daca j pleaca de la 3 pana la i/2, atunci cand i nu se imparte exact la j niciodata, nu ar trebui ca j sa fie numar prim? Corect, daca nu se imparte NICIODATA exact la j , doar ca tu afisezi daca nu se imparte CEL PUTIN ODATA la j. |
#5
Posted 08 August 2014 - 09:39
yonut_a, on 08 august 2014 - 09:29, said:
Corect, daca nu se imparte NICIODATA exact la j , doar ca tu afisezi daca nu se imparte CEL PUTIN ODATA la j. #include <iostream> using namespace std; int main() { int n,i,j,prim=1; cout << "Baga numar: "; cin >> n; for(i=3; i<=n; i++) for(j=1; j<i/2; j++) { if(i%j==0) prim=0; } for(j=1; j<i/2; j++) { if(prim==1) cout << j; } }Nu stiu cum sa testez conditia spusa de tine pentru fiecare numar in parte |
#6
Posted 08 August 2014 - 09:52
Poti incerca asa ceva in bucla for:
int ok = false; for ( int j = 2; j < i / 2; ++j ) if ( i % j == 0 ) ok = true; if ( ok ) cout << i << ' '; Desigur ca exista algoritmi mai buni pentru determinarea numerelor prime. Ai invatat functiile? Edited by Redount2k9, 08 August 2014 - 09:54. |
#7
Posted 08 August 2014 - 09:54
...si iti va zice ca nici un numar nu e prim pentru ca toate se impart la 1.
|
#8
Posted 08 August 2014 - 09:57
Redount2k9, on 08 august 2014 - 09:52, said:
Poti incerca asa ceva in bucla for: int ok = false; for ( int j = 2; j < i / 2; ++j ) if ( i % j == 0 ) ok = true; if ( ok ) cout << i << ' '; Desigur ca exista algoritmi mai buni pentru determinarea numerelor prime. Ai invatat functiile? |
#9
Posted 08 August 2014 - 10:00
Atunci iti dau o tema:
Incearca sa faci o functie (desigur, cat mai eficienta dpdv al complexitatii) care sa verifice daca parametrul sau este numar prim. Cand crezi ca ai gasit solutia optima, da-mi un mesaj. |
#10
Posted 08 August 2014 - 10:38
Cantafford92, on 08 august 2014 - 09:12, said:
Sunt incepator deci nu imi dau seama ce am gresit. Ajutor, va rog. Multumesc! [ https://www.youtube-nocookie.com/embed/eZUa5k_VIZg?feature=oembed - Pentru incarcare in pagina (embed) Click aici ] vezi ca sunt destule explicatii despre numere prime pe aria asta de unde incepem, pana unde merge, si cum salvam da un search Edited by MarianG, 08 August 2014 - 10:55. |
|
#11
Posted 08 August 2014 - 10:49
cout << "Baga numar: "; cin >> n; int nrdiv=0; for(int i=3;i<n;i++) { nrdiv=0; for(int j=1;j<i;j++) { if(i%j==0) nrdiv++; } if(nrdiv<3) cout<<n<<" "; }cam asa ceva daca are mai putin de 3 divizori, atunci e prim si il afisezi Edited by opop, 08 August 2014 - 10:50. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users