Răspuns :
Intrebarea mai buna e de ce primesti 90 de puncte pe o rezolvare complet gresita. Probabil majoritatea unit testurilor au avut numere care sunt divizibile la 7.
De ce functia ta e gresita ?
Subprogramul tau verifica daca numarul este divizibil cu 7. Daca este atunci returneaza 0, daca nu este returneaza 1.
Asta ar functiona daca toate numerele prime ar fi 2,3,5 si 7. Dar sunt o infinitate de alte numere prime. Spre exemplu 11,13,17,23, etc.
Daca am avea numarul 66 = 2*3*11 programul tau ar returna adevarat. Dar e clar ca ar trebui sa returneze fals (66 nu apartine multimii H).
Functie corecta (100 puncte):
bool apartenenta(unsigned n) {
while (n % 2 == 0)n /= 2;
while (n % 3 == 0)n /= 3;
while (n % 5 == 0)n /= 5;
if (n == 1) return 1;
else return 0;
}
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Ne bucurăm dacă informațiile oferite v-au fost de folos. Pentru orice întrebări sau sprijin suplimentar, suntem aici pentru voi – nu ezitați să ne contactați. Vă așteptăm cu drag să reveniți și vă sugerăm să ne salvați în lista de site-uri preferate!