[A25-55] Un caso unico aritmetico

Il forum di Base5, dove è possibile postare problemi, quiz, indovinelli, rompicapo, enigmi e quant'altro riguardi la matematica ricreativa e oltre.

Moderatori: Gianfranco, Bruno

Rispondi
Quelo
Livello 8
Livello 8
Messaggi: 988
Iscritto il: ven giu 16, 2006 3:34 pm

[A25-55] Un caso unico aritmetico

Messaggio da Quelo »

Ecco il ragionamento che ho fatto io
Il numero di modi in cui un numero naturale $n$ può essere ottenuto come somma di numeri naturali è $2^{n-1}$
Facciamo l'esempio del numero 3, i modi sono 4: 3, 2+1, 1+2, 1+1+1
Possiamo semplificare la determinazione aiutandoci con i numeri binari
Consideriamo $n-1$ bit: 00, 01, 10, 11
0 è la somma interna (accorpamento)
1 è la somma esterna
Il tutto associato a $n$ unità: 1 (b1) 1 (b0) 1
Nel nostro caso
00: 1(+)1(+)1 = 3
01: 1(+)1 + 1 = 2+1
10: 1 + 1(+)1 = 1+2
11: 1 + 1 + 1 = 1+1+1
Automatizzando il processo ricaviamo i modi per qualsiasi numero (avendo tempo a sufficienza)
Dobbiamo considerare le combinazioni che contengono solo numeri primi (per il 3 da quattro si passa a 1), ma comunque la progressione rimane di tipo esponenziale
Se la parità si ha per il 17, tutti i primi maggiori di 17 avranno un numero di modi che è maggiore del primo stesso, analogamente per quelli minori

Codice: Seleziona tutto

primo	modi
2	1
3	1
5	2
7	3
11	6
13	9
17	17
19	23
23	40
29	87
31	111

Codice: Seleziona tutto

from primality.primality import isprime as isp

p = [2,3]

for n in range(1,6):
    for j in range(-1,2,2):
        m = 6*n+j
        if isp(m):
            f = []
            p.append(m)
            for i in range(0,2**(m-2)-1,2):
                b = bin(i)[2:].rjust(m-1,'0')
                d = 1
                e = []
                if b.find('11')==-1:
                    for c in list(b):
                        if c=='0':
                            d += 1
                        else:
                            e.append(d)
                            d = 1
                    e.append(d)
                    if set(e)-set(p)==set() and sorted(e) not in f:
                        f.append(sorted(e))
            print(m, len(f))
[Sergio] / $17$

Quelo
Livello 8
Livello 8
Messaggi: 988
Iscritto il: ven giu 16, 2006 3:34 pm

Re: [A25-55] Un caso unico aritmetico

Messaggio da Quelo »

Mi pareva strano che non ci fosse

A056768
[Sergio] / $17$

Rispondi