• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Liczby pierwsze - dlaczego nie mogę tego zrobić funkcja "if"?

Object Storage Arubacloud
–1 głos
186 wizyt
pytanie zadane 29 kwietnia 2017 w C i C++ przez Galit Początkujący (280 p.)
Staram się zrobić zadanie z serwisu SPOJ.com i natknąłem się na problem, myśle że w moim rozumowaniu. Wszędzie widzę że inaczej podchodzą do tego problemu, a dla mnie logicznie jest to zrobić IF'em, tak najprościej. Ale raz że nie wychodzi, dwa że chyba nie tędy droga, więc niech ktoś mi powie gdzie jest błąd mojego rozumowania.




#include <iostream>

using namespace std;


int n;


int main()
{
    cout << "Podaj liczbe, sprawdzimy czy jest to liczba pierwsza" << endl;
    cin >> n;

if ((n>1)&&(n/1)&&(n/n))
{
    cout <<"TAK";
}
else
{
    cout <<"NIE";
}
    return 0;
}

 

 

 

komentarz 29 kwietnia 2017 przez 10kw10 Pasjonat (22,880 p.)
kazda liczba jest podzielna przez 1 i sama siebie

2 odpowiedzi

+1 głos
odpowiedź 29 kwietnia 2017 przez k222 Nałogowiec (30,150 p.)
skoro liczba ma być pierwsza to musi się dzielić tylko przez 1 i samą siebie (na dodatnich) a u  Ciebie nie ma nigdzie sprawdzenia czy nie ma czasem jakichś innych dzielników, poza tym ja nie rozumiem sensu zapisów n/1 i n/n w if'ie bo to jest prawda dla każdej liczby oprócz 0
komentarz 29 kwietnia 2017 przez Galit Początkujący (280 p.)
No w sumie tak xD

TO jak najlepiej żebym w ELSE zapisał żeby nie było innych dzielników, czy wogóle olać if ??

 

Widzice człowiek jak robi to takich prostych byków nie widzi..
komentarz 29 kwietnia 2017 przez k222 Nałogowiec (30,150 p.)

Ważną rzeczą jest fakt że interesuje Cię przedział ( 1 ; √n > jak w tym przedziale nie będzie dzielników to w przedziale <√n ; n) też ich nie będzie, poza tym jak sprawdzisz 2 to pozostałych parzystych możesz olać, zostają tylko nieparzyste a to w sumie już daje 4 razy mniej liczb do sprawdzenia (około) a poza tym to trzeba sprawdzać po kolei chyba że jeszcze jakoś Ci się uda prosto zmniejszyć ilość podejrzanych liczb. Teraz się zastanów jak to zapisać najszybciej i najprościej wink

0 głosów
odpowiedź 29 kwietnia 2017 przez Codeboy Stary wyjadacz (12,120 p.)
Tak jak inni mówią ten warunek jest bez sensu bo jest prawdziwy dla każdej liczby... Sprawdzaj czy liczba n ma jakiś dzielnik z przedziału (1, √n). Jeśli ma to nie jest liczbą pierwszą.

Podobne pytania

0 głosów
2 odpowiedzi 642 wizyt
pytanie zadane 10 stycznia 2019 w C i C++ przez Patrykc23 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 482 wizyt
pytanie zadane 22 maja 2023 w C i C++ przez KarmazynowyKaraś Nowicjusz (240 p.)
0 głosów
1 odpowiedź 365 wizyt
pytanie zadane 14 września 2022 w C i C++ przez fsfxvcxv Obywatel (1,160 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...