Salt la conținut

SUBIECTE NOI
« 1 / 5 »
RSS
Tencuiala exterioara casa caramid...

Contact posibil deteriorat proces...

ce se mai lucreaza remote ?

Care din urmatoarele optiuni este...
 Distante etrieri

Fisier corupt reapare in galeria ...

Ce condensator ar putea fi? TV Vo...

Problema droguri
 Soldat gradat profesionist - dipl...

Eroare incarcare formular

merita upgrade de la Ryzen 5 2600...

Intel i9 14900K cooler air Deepco...
 Curațare disc vinil

Atentie la site-ul FixShop.ro - p...

Display cu culori neuniforme

Despre Laborator Defectoscopie Ca...
 

Numere prime <=n

- - - - -
  • Vă rugăm să vă autentificați pentru a răspunde
10 răspunsuri în acest subiect

#1
Cantafford92

Cantafford92

    Junior Member

  • Grup: Members
  • Mesaje: 54
  • Înscris: 16.07.2014
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!

Editat de Cantafford92, 08 august 2014 - 09:25.


#2
yonut_a

yonut_a

    Trala la la la

  • Grup: Senior Members
  • Mesaje: 3.948
  • Înscris: 03.08.2008
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
Cantafford92

Cantafford92

    Junior Member

  • Grup: Members
  • Mesaje: 54
  • Înscris: 16.07.2014

View Postyonut_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.
Am testat incepand cu 3 pentru ca am vrut sa afisez toate numerele prime mai mari ca 1, fara numarul 2.

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?

Editat de Cantafford92, 08 august 2014 - 09:24.


#4
yonut_a

yonut_a

    Trala la la la

  • Grup: Senior Members
  • Mesaje: 3.948
  • Înscris: 03.08.2008

View PostCantafford92, 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.

View PostCantafford92, 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
Cantafford92

Cantafford92

    Junior Member

  • Grup: Members
  • Mesaje: 54
  • Înscris: 16.07.2014

View Postyonut_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.
Ok, am inteles dar nu stiu cum sa scriu asta in program :(.

#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
Redount2k9

Redount2k9

    Member

  • Grup: Members
  • Mesaje: 374
  • Înscris: 13.07.2010
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?

Editat de Redount2k9, 08 august 2014 - 09:54.


#7
tatarduka

tatarduka

    Senior Member

  • Grup: Senior Members
  • Mesaje: 3.042
  • Înscris: 30.10.2006
...si iti va zice ca nici un numar nu e prim pentru ca toate se impart la 1.

#8
Cantafford92

Cantafford92

    Junior Member

  • Grup: Members
  • Mesaje: 54
  • Înscris: 16.07.2014

View PostRedount2k9, 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?
Putin. Stiu cum se declara si foloseste o functie insa nu prea am lucrat efectiv cu ele.

#9
Redount2k9

Redount2k9

    Member

  • Grup: Members
  • Mesaje: 374
  • Înscris: 13.07.2010
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Mesaje: 31.489
  • Înscris: 10.08.2005

View PostCantafford92, on 08 august 2014 - 09:12, said:

Sunt incepator deci nu imi dau seama ce am gresit. Ajutor, va rog. Multumesc!
uite o abordare matematica

[ 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

Editat de MarianG, 08 august 2014 - 10:55.


#11
opop

opop

    bolnav cronic :(

  • Grup: Senior Members
  • Mesaje: 6.570
  • Înscris: 06.01.2007
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

Editat de opop, 08 august 2014 - 10:50.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

Utilizatori activi: 1

0 membri, 1 vizitatori, 0 utilizatori anonimi

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate