[C++] Program wypisujący liczby pierwsze z przedziału

Fanifur
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 3 cze 2018, o 16:59
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 2 razy

[C++] Program wypisujący liczby pierwsze z przedziału

Post autor: Fanifur »

Witam, niedawno rozpocząłem swoją przygodę z c++ na

Kod: Zaznacz cały

http://cpp.jcom.pl/index.php
i utknąłem na następującym zadaniu: "Napisz program, który z podanego przedziału (od jeden) wypisuje liczby pierwsze." Napisałem taki kod
Ukryta treść:    
ale zwraca on wszystkie liczby z zakresu. Próbowałem różnych sposobów i dodatkowo odkryłem, że jeżeli w 14 linijce zamienię "==" na "!=" to program zwraca wszystkie liczby poza pierwszymi z zadanego przedziału, więc chyba nie wszystko jest kompletnie źle Będę wdzięczny, gdyby ktoś wskazał błąd w kodzie, lub poradził inne podejście do tematu.
Awatar użytkownika
leg14
Użytkownik
Użytkownik
Posty: 3132
Rejestracja: 5 lis 2014, o 20:24
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 154 razy
Pomógł: 475 razy

[C++] Program wypisujący liczby pierwsze z przedziału

Post autor: leg14 »

A próbowałeś sobie tę pętlę przelecieć dla np. dzielna = 10?
Fanifur
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 3 cze 2018, o 16:59
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 2 razy

[C++] Program wypisujący liczby pierwsze z przedziału

Post autor: Fanifur »

Rzeczywiście, teraz przeanalizowałem to sobie na papierze i doszedłem do wniosku, że dla dzielnej 10 warunek zewnętrzny odrzuci 3, 4, 6, 7, 8 i 9, a wewnętrzny 2 i 5, więc 10 i tak zostanie wypisane. I każda liczba zostanie wypisana, bo jednym z dzielników każdej jest ona sama. Ale w takim razie dlaczego kod na sprawdzenie, czy liczba jest pierwsza oparty na tych samych dwóch warunkach działa? No i jak obejść ten problem tutaj?
Mój kod na sprawdzenie:
Ukryta treść:    
athame
Użytkownik
Użytkownik
Posty: 576
Rejestracja: 2 lut 2012, o 21:42
Płeć: Mężczyzna
Lokalizacja: Radom
Podziękował: 1 raz
Pomógł: 64 razy

[C++] Program wypisujący liczby pierwsze z przedziału

Post autor: athame »

Kod: Zaznacz cały

#include <iostream>
using namespace std;
int main() {
  int granica, dzielna=1, dzielnik;
  cout<<"granica: ";
  cin>>granica;
  while(dzielna<=granica) {
    for(dzielnik=2; dzielnik<=dzielna; dzielnik++) {
      if(dzielna%dzielnik==0) {
        if (dzielna==dzielnik) cout<<dzielna<<endl;
        else break;
      }
    }  
    dzielna++;
  }
  return 0;
}
Fanifur
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 3 cze 2018, o 16:59
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 2 razy

[C++] Program wypisujący liczby pierwsze z przedziału

Post autor: Fanifur »

Mała rzecz, a taka zmiana! Dzięki wielkie, panowie!
a4karo
Użytkownik
Użytkownik
Posty: 22207
Rejestracja: 15 maja 2011, o 20:55
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 38 razy
Pomógł: 3754 razy

[C++] Program wypisujący liczby pierwsze z przedziału

Post autor: a4karo »

Chyba łatwiej zaimplementować sito.
Fanifur
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 3 cze 2018, o 16:59
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 2 razy

[C++] Program wypisujący liczby pierwsze z przedziału

Post autor: Fanifur »

Być może. Kilkukrotnie natknąłem się na nie, szukając pomocy, ale chciałem iść zgodnie z tym kursem, tzn. napisać ten program wykorzystując tylko to, co zdążyłem poznać.
ODPOWIEDZ