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 pentru vizita pe platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de sprijin suplimentar, vă încurajăm să ne contactați. Revenirea dumneavoastră ne bucură, iar dacă v-a plăcut, nu uitați să adăugați site-ul nostru la favorite!