5 / 5
Feb 2024

Może mi ktoś pomóc z tym, bo mi nie zalicza z niewiadomych mi przyczyn :confused: :slight_smile:

#include
#include

bool pierwsza(int num);
int testy, liczba;

int main(){

std::cin >> testy;

for(int i = 1; i <= testy; i++){
    std::cin >> liczba;   
      if(pierwsza(liczba) == true) std::cout << "TAK" << '\n';
      else if(pierwsza(liczba) == false) std::cout << "NIE" << '\n'; 
}

return 0;

}

bool pierwsza(int num){
bool czy;

if(num == 2 || num == 3){
    return true;
}

for(int j = 2; j <= sqrt(num); j++){
     if(num % j == 0){
        czy = false;
        break;
     }  
     else if(num % j != 0) czy = true; 
 }
 return czy;

}

  • created

    Feb '24
  • last reply

    Feb '24
  • 4

    replies

  • 189

    views

  • 2

    users

  • 1

    like

Jedynka nie jest liczbą pierwszą:

if (num == 1) {
    return false;
}

P.S. Możesz coś napisać krócej w funkcji main:

 if (pierwsza(liczba)) std::cout << "TAK\n";
 else std::cout << "NIE\n";

Co najlepsze 1 nie była liczbą pierwszą i bez tego, ale dopiero po dodaniu tego zaliczyło. Dziwne…

P.S. Dzięki.

Dla 1 zmienna czy nigdy nie była zainicjalizowana, bo pętla nie mogła się wykonać. Dlatego miała losową wartość z pamięci.