domenica 23 ottobre 2016

Cercando di violare RSA

n = pq
n = p(a+b) = pa+pb = p(p+x)+p(p+y)

n = 2p^2+p(x+y)

V = x+y opp V= -x-y opp V = x-y ecc

2p^2+Vp-n = 0

ho un'equazione di II grado con delta > 0

delta = V^2+8n

faccio variare V negli interi dispari finché V^2+8n  non sarà un quadrato perfetto

a qual punto avrò le soluzioni di p i fattori di n.

Analogamente V^2+8n = W^2
quindi

V^2 = W^2-8n

quindi

W > 2*sqrt(2n), W dispari

Cercando le soluzioni in entrambi i sensi si arriva presto al risultato  magari con due pc  in parallelo


CASO 1
import math;
def facto(n):
 w = 2*math.floor(math.sqrt(2*n));
 w = w+1;
 v = math.sqrt(math.fabs(w*w-8*n));
 p = (-v+w)/4;
 q = (-v-w)/4;
 while ((p != math.floor(p)) and (q != math.floor(q))):
  w = w+2;
  v = math.sqrt(math.fabs(w*w-8*n));
  p = (-v+w)/4;
  q = (-v-w)/4;
 if (q == math.floor(q)):
  print(math.fabs(q));
  print(n/math.fabs(q));
 else:
  print(math.fabs(p));
  print(math.fabs(n/p));

CASO2
import math;
def facto2(n):
 v = 1;
 p = (-v+math.sqrt(v*v+8*n))/4;
 q = (-v-math.sqrt(v*v+8*n))/4;
 while ((p != math.floor(p)) and (q != math.floor(q))):
  v = v+2;
  p = (-v+math.sqrt(v*v+8*n))/4;
  q = (-v-math.sqrt(v*v+8*n))/4;
 if (q == math.floor(q)):
  print(math.fabs(q));
  print(n/math.fabs(q));
 else:
  print(math.fabs(p));
  print(math.fabs(n/p));


sabato 8 ottobre 2016

Una notissima equazione diofantina

x^n + y^n+ z^n = k^(n+1)

k = 13
si può risolvere con lo schema:

(m(m^k+n^k+p^k))^k+(n(m^k+n^k+p^k))^k+(p(m^k+n^k+p^k))^k=(m^k+n^k+p^k)^(k+1)

Altre equazioni diofantine sono disponibili su




giovedì 6 ottobre 2016

Fattorizzazione e residui quadratici

Sia un intero b < n

b residuo quadratico modulo n

n = pq p, q primi

allora trovo x1, x2:

b = (x1)^2 mod n
b = (x2)^2 mod n

b-(x1)^2 = (k1)n
b-(x2)^2 = (k2)n

Q= k2-k1

questo vuol dire che (x2)^2-(x1)^2 = Qn

ovvero ho trovato una fattorizzazione per il numero dispari n
basta scegliere due coppie x1 e x2 tali che uno sia pari e l'altro sia dispari



lunedì 3 ottobre 2016

Ottimizzare la quantità prodotta

R = ricavi = pq
p = prezzo unitario
q = quantità del prodotto
C = costi = cq
c = costo unitario del prodotto
Profitto = R-C = pq-cq = (p-c)q
se p = a-bq
Profitto = R- C = (a-bq)q-cq = -bq^2+(a-c)q
Profitto = -bq^2 +(a-c)q
max(profitto)  => q* = (a-c)/2b