Un număr natural se numește major impar dacă suma divizorilor săi proprii impari este strict mai mare decât suma divizorilor săi proprii pari. Divizorii proprii ai unui număr sunt divizorii săi naturali diferiți de 1 și de el însuși.
Exemplu: 18 este număr major impar (divizorii săi proprii pari sunt 2, 6, cei impari 3, 9, iar 3+9>2+6).
Identificatorii utilizați în rezolvări trebuie să respecte precizările din enunț (bold), iar în lipsa unor precizări explicite, notațiile trebuie să corespundă cu semnificațiile asociate acestora (eventual în formă prescurtată). Datele de intrare se consideră corecte, validarea lor nefiind necesară.
Cerința
10 puncte
Subprogramul majImp are doi parametri, a și b, prin care primește câte un număr natural (2≤a≤b≤10⁴).
Subprogramul returnează cel mai mic număr major impar din intervalul [a,b], sau valoarea 0, dacă în interval nu există un astfel de număr. Scrieți în C/C++ definiția completă a subprogramului.
Exemplu: dacă a=16, b=30, atunci subprogramul returnează 18. (10p.)
Arată baremul
SUBIECTUL al III-lea, 1.
Pentru subprogram corect - 10p.
-antet al subprogramului (*) - 2p.
-determinare a valorii cerute (**) - 6p.
-instrucțiune/instrucțiuni de returnare a rezultatului și tratare a cazului 0 - 1p.
-declarare a tuturor variabilelor locale, corectitudine globală a subprogramului¹⁾ - 1p.
(*) Se acordă câte 1p. pentru fiecare aspect al antetului (structură, parametri de intrare) conform cerinței.
(**) Se acordă câte 1p. pentru fiecare aspect specific (identificare a unui divizor par/impar, algoritm de bază pentru suma unei serii de valori, divizori suport pentru fiecare sumă, identificare a unui număr major impar, algoritm de bază pentru identificarea primului/celui mai mic număr cu o anumită proprietate dintr-o serie, numere suport verificate pentru determinarea numărului major impar cerut) conform cerinței.
¹⁾ Corectitudinea globală vizează structura, sintaxa, alte aspecte neprecizate în barem.