Wpis z mikrobloga

Mirki, pomocy, teraz! #cpp #programowanie #pomocy

co jest nie tak w tym programie? Potrzebuje funkcji na liczbe pierw3szą, ale słabo ogarniam bool:


#include

using namespace std;

bool lp(int x)

{

int d, s=0;

for(d=1; d<=x; d++)

if (x%d==0) s=s++;

if (s==2) return true;

else return false;

}

int main(int argc, char *argv[])

{

int x;

cout<<"podaj liczbe"<
cin>>x;

if(lp(x))cout<<"liczba pierwsza"<
else cout<<"liczba nie jest pierwsza"<

system("PAUSE");

return EXIT_SUCCESS;

}
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Pierwiastek_z_Czech: wg mnie ten program zadziała tylko dla liczb z dwoma podzielnikami.. zamieniłbym if (s==2) na if (s>=2) i for(d=2...) reszta powinna działać

edit: pomijając fakt, że jest to cholernie nieoptymalne
  • Odpowiedz
@Pierwiastek_z_Czech: Mała porada - nazywaj funkcje tak, żeby z nazwy było wiadomo co ona robi, bo potem stworzysz 100 funkcji i się zabijesz. W twoim przypadku powinno być coś w stylu

bool CzyPierwsza()
albo

bool IsPrimeNumber()
  • Odpowiedz
@blisher: Dzieki za te uwagi. Wprawdzie nazwalem zmienne i funkcje od pierwszych liter, np. "lp to liczba pierwsza, "d" to dzielniki, ale rzeczywiście można się zgubić. Nadal niestety nie potrafię znaleźć błędu, który powoduje że każda liczba jest uznawana za nie-pierwszą.
  • Odpowiedz