Soluzione (numeri vicini)


Problema: trovare un intero tale che spostando l'ultima cifra di fronte al numero si raddoppi il numero originario.

Soluzione:
Scrivere il numero come

10 * N + i

dove N è un intero a n cifre, i una cifra

Allora:

2 * (10 * N + i) = i * 10^n + N

19 * N = i * (10^n - 2)

N = (i * (10^n - 2))/19

Dato che 19 è primo e non divide i, deve dividere 10^n - 2

Dal teorema di Fermat:

X^(p-1) è divisibile per p se p è primo e non divide X

Quindi 10^18 - 1 è divisibile per 19

Utilizzando le congruenze di Gauss, sciviamo quanto appena ottenuto come

10^18 icw 1 mod 19 (icw="is congruent with", ovvero 10^18 da come resto 1 quando diviso per 19)

e

(A) 10^18 icw 20 mod 19 (possiamo aggiungere 19)

(B) 10^1 icw 10 mod 19 (10 diviso per 19 da come resto 10)

Dividendo (A) per (B):

10^17 icw 2 mod 19, ovvero

10^17 - 2 e' divisibile per 19

Quindi N = (i * (10^17 - 2))/19

e l'intero cercato (10 * N + i) e' allora:

10 * (i * (10^17 - 2))/19 + i

In teoria i=(1,...9)
Con 1 però non funziona perché un numero la metà di un numero che inizia per 1 ha una cifra in meno. Con 2,...9 tutto a posto.

Ovviamente questo non è il modo più rapido di costruire una soluzione. Si parte da i=2 e si compongono a partire da destra verso sinistra il numero e il suo doppio ottenuto per spostamento della cifra finale
Scrivo
numero base ......2
numero doppio ......4

(#) poi scrivo la cifra ottenuta dal raddoppio alla sx di quella di partenza

numero base .....42
e quindi
numero doppio .....84

ripeto il punto (#)

numero base ....842
e di conseguenza
numero doppio ....684

con riporto uno

ancora
numero base ...6842
numero doppio ...3684

avendo sommato 1 che riportavo. Proseguo cosi' fino alla 18a cifra, ovvero quando nel numero doppio mi si ripresenta la cifra iniziale (in questo caso 2), senza riporti:
105263157894736842
210526315789473684

 


accessToken: '2206040148.1677ed0.0fda6df7e8ad4d22abe321c59edeb25f',