Esercizio 44

g
giacomo_venturini (6680 points)
2 5 39
asked Jan 17, 2021 in Eserciziario d'esame by giacomo_venturini (6,680 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?

168 views

2 Answers

Best answer
twgever (15190 points)
7 27 105
answered Jan 17, 2021 by twgever (15,190 points)
selected Jan 18, 2021 by giacomo_venturini
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)
2 5 39
commented Jan 18, 2021 by giacomo_venturini (6,680 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 (15190 points)
7 27 105
commented Jan 18, 2021 by twgever (15,190 points)
beh, allora senza scrivere distinti avrei potuto scrivere 1000 volte uno e rientrarci comunque :/
andrea.sterbini (172680 points)
511 927 1776
commented Jan 18, 2021 by andrea.sterbini (172,680 points)
No, chiede un insieme
O
Oakandrew (6400 points)
4 26 63
answered Jan 17, 2021 by Oakandrew (6,400 points)
edited Jan 17, 2021 by Oakandrew
6mod1=0;  6mod2=0; 6mod3=0; 6mod6=0.

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