Obliczanie liczby bliźniaczej według kroków

0

screenshot-20210309145844.png

#include <iostream>
using namespace std;


bool liczba_pierwsza(unsigned int liczba) {

    for(int i = 2; i < liczba; i++) {
        if(liczba % i == 2) {
            return false;
        }
    }
    return true;


}

int main()
{
     unsigned int a, b;

     cin >> a >> b;

     bool wa = liczba_pierwsza(a);
     bool wb = liczba_pierwsza(b);

     if(wa && wb && '|a - b|' == 2)
        cout << true << endl;
     else
        cout << false << endl;


     return 0;

}



Gdzie mam błąd, dlaczego cały czas zwraca mi 0?

1

if(liczba % i == 2) { ????

Sprawdź co zwraca liczba_pierwsza(4).

A to co ma być: if(wa && wb && '|a - b|' == 2)? A konkretnie '|a - b|' == 2)???
Kompilator powinien ci krzyczeć, że nie potrafi reprezentować takich znaków wielobajtowych, porównujesz stały znak (który jest dziwny) do stałej liczby.

1

@Kuba Wąsowicz:
W liczba_pierwsza powinno być liczba % i == 0, poza tym funkcja ma jeszcze jednego buga, zwraca true dla jedynki na wejściu. A tutaj:
if(wa && wb && '|a - b|' == 2) ???
Masz obliczyć wartośc bezwzględną a nie przepisać definicję, chyba miałeś blind spot:)

0

@MarekR22: Powiesz mi co mam poprawić w funkcji, ktora obliczba czy liczba jest liczbą pierwszą, żeby cały kod poprawnie działał(Poprawiłem '|a-b|' na abs(a - b) i jest to samo

0

Co masz na myśli z tym bugiem w tej funkcji?

Napisałem

zwraca true dla jedynki na wejściu

Musisz dodać jakiś warunek i zmienić to == 2, == 0, np.:

bool liczba_pierwsza(unsigned int liczba) {
    if (liczba < 3)
        return liczba > 1;
    for(int i = 2; i < liczba; i++) {
        if(liczba % i == 0) {
            return false;
        }
    }
    return true;
}

Wiesz co poprawiłem '|a-b|' na abs(a - b) , ale cały czas zwraca 0

NIe te typy, abs nie przyjmuje unsigned, zmień typ; mozna też spróbować "haka", napisać abs:

unsigned int my_abs(unsigned int a, unsigned int b) {
    if (a >= b)
        return a - b;
    return b - a;
}

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