program: liczby pierwsze do n

0

mam napisac program wypisujący liczby pierwsze z przedziału od <2;n>

dosc długo już nad tym siedze, byłabym wdzięczna jesli ktoś by mi poprawił co w tym programie jest źle że te liczby nie chcą sie wypisywac :/ chyba juz kompletnie to pogmatwałam

#include <iostream.h>
#include <conio.h>
#include <math.h>

main ()
{

long int k;

int dzielnik=2;

cout<<"Wpisz granicę liczb pierwszych: ";
cin>>k;

 while (  ((k % dzielnik) != 0) && ((dzielnik <= sqrt(k))) );

    dzielnik++;

 if (dzielnik>sqrt(k));

  cout<<k<<" ";


      return 1;

  getch();

}
0

Po if(sth) i while(sth) masz średniki, czyli kompilator to traktuje, jako pustą pętlę i pusty if. Usuń średniki w tych dwóch miejscach.

0
  1. TRAGICZNIE formatujesz kod
  2. Ten kod nie trzyma się kupy (ani logiki)
  3. co to za return 1; ? Tymbardziej w funkcji, która nic nie zwraca (no bo przeciez tak ją napisałaś...)

A twój problem (jeden z nich przynajmniej) wynika ze srednika na końcu:

 while (  ((k % dzielnik) != 0) && ((dzielnik <= sqrt(k))) );

A kod powienien wygląda mniej więcej tak:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
  int n;
  cin>>n;
  cout<<2; //bo jest pierwsze :P
  for(int liczba=3;liczba<n;liczba++)
    {
      int pierwiastek = sqrt(liczba);
      bool dzielnik = false;
      for(int i=3;i<pierwiastek && !dzielnik;i+=2)
        if(!(liczba%i))
          dzielnik=true;
      if(!dzielnik)
        cout<<liczba<<"\n";
    }
  return 0;
}

</cpp>
0

Dla przeszukania podanego zakresu w poszukiwaniu liczb pierwszych lepsze jest Sito Eratostenesa

0

wystarczy opcja szukaj, a na forum znajdzie z 10 implementacji tego problemu.

0
złoty napisał(a)

Dla przeszukania podanego zakresu w poszukiwaniu liczb pierwszych lepsze jest Sito Eratostenesa

W czym konkretnie lepsze?

0
somekind napisał(a)
złoty napisał(a)

Dla przeszukania podanego zakresu w poszukiwaniu liczb pierwszych lepsze jest Sito Eratostenesa

W czym konkretnie lepsze?

Szybciej wyszuka wszystkie liczby od 2 do n, kosztem większego zużycia pamięci(tablica booli np. bool[1000000000] jednak trochę zajmuje...

1 użytkowników online, w tym zalogowanych: 0, gości: 1