Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Esercizio 44

g
giacomo_venturini (6680 points)
3 6 40
in Eserciziario d'esame by (6.7k points)

Ciao a tutti, vorrei segnalare quello che credo sia un errore o nel testo o nei test dell'esercizio 44 che riporta nel testo:

Si progetti la funzione es44(a,b) che,  in input due interi a e b restituisce 
l'insieme dei primi a interi che hanno esattamente b divisori.
Ad esempio per a=20 e b=2 la funzione deve restituire l'insieme dei primi 20 numeri primi
(perche' solo i numeri primi hanno esattamente 2 divisori), vale a dire:
{2, 3, 67, 5, 37, 7, 71, 41, 11, 43, 13, 47, 17, 19, 61, 53, 23, 59, 29, 31}

implementando la funzione mi aspetto che, per esempio, i primi 5 numeri con 3 divisori siano 4 (1*2*2), 6 (1*2*3), 9 (1*3*3), 10 (1*2*5), 14 (1*2*7), mentre nei test i primi 10 numeri con 3 divisori sono:
{289, 4, 9, 169, 361, 841, 49, 529, 121, 25}
dove viene usata come logica il prodotto dello stesso divisore b-1 volte (1* numero_primo^(b-1)), che però non corrisponde a quanto indicato dal testo.

Dov'è quindi l'errore?

276 views
closed

2 Answers

Best answer
twgever (17470 points)
8 29 105
by (17.5k points)
selected by
quando cerchi i divisori, non devi trovare i numeri che, moltiplicati fra di loro, danno come risultato il numero che stai analizzando.

se io ti dessi 20, allora secondo il tuo ragionamento, 20=1*2*2*5. eppure anche 10 è divisore di 20. e anche 20 è divisore di 20

divisore!=fattore primo

un numero B è un divisore del numero A, se facendo la divisione intera A/B,  il resto è 0. Poi che i divisori siano prodotto degli stessi fattori primi, è un altro conto, ma tu devi cercare tutti i numeri B da 1 ad A per cui è vero che A/B dia resto 0.
g
giacomo_venturini (6680 points)
3 6 40
by (6.7k points)
Chiarito il mio dubbio, allora l'unico appunto che mi rimane è che potrebbe essere più chiaro il testo scrivendo "esattamente b divisori distinti"
twgever (17470 points)
8 29 105
by (17.5k points)
beh, allora senza scrivere distinti avrei potuto scrivere 1000 volte uno e rientrarci comunque :/
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
No, chiede un insieme
O
Oakandrew (6400 points)
7 27 64
by (6.4k points)
edited by
6mod1=0;  6mod2=0; 6mod3=0; 6mod6=0.

Sono 4 divisori(numero=6):1;2;3;6