domenica 22 settembre 2013

RSA e fattorizzazione con BC per Windows

ecco alcuni codici in BC programma per la gestione di grandi numeri a precisione arbitraria

FATTORIZZAZIONE

n = 1234567891243;
scale = 0;
s = 2*sqrt(n)+2;
p = (s-sqrt(s^2-4*n))/2;
while( ((n/((s-sqrt(s^2-4*n))/2 ))*((s-sqrt(s^2-4*n))/2)) != n )
s = s+2;
p = (s-sqrt(s^2-4*n))/2;
print p;
__________________________________________________________________
scale = 0;
n = 187;
for(i=3; i<= sqrt(n); i=i+2)
if(((n/i)*i)==n)
print c;
__________________________________________________________________
n = 2^67-1;
scale = 0;
p = 3;
while (((n/p)*p) != n )
p = p+2;
print p;

-------------------------------------------------------------------------
PRIMALITA' ALLA FERMAT
scale = 0;
p = 101;
for(i=1; i<=100; i++)
print((i^p)%p)


FATTORIALE
n = 6;
h = 1;
for (i= 1;i<=n ; i++)
h = h*i
print h;


venerdì 20 settembre 2013

Algoritmi ausiliari in teoria dei numeri

MOLTIPLICAZIONE VELOCE DI GRANDI NUMERI INTERI
import math;
def prodotto(m,n):
 S = 0;
 A = m;
 B = n;
 while A > 0:
  q = int(A/2);
  r = A-2*q;
  if r ==1:
   S = S+B;
  A = q;
  B = 2*B;
 return S;

CALCOLO VELOCE  DELLA POTENZA DI GRANDI NUMERI INTERI
import math;
def potenza(a, m):
 P = 1;
 M = m;
 A = a;
 while M >0:
  q = int(M/2);
  r = M-2*q;
  if r == 1:
   P = P*A;
  M = q;
  A = A*A;
 return P;
OPERAZIONI CON ARITMETICA MODULARE
import math;
def modulo(m, n):
 c = m%n;
 return c;

lunedì 16 settembre 2013

La congettura debole di Goldbach

Assumiamo che valga la congettura forte di Goldbach ovvero che ogni numeri pari maggiore di 4 si possa sempre scrivere come somma di due numeri primi, quindi ogni 2 a = p + q. Ogni numeri dispari si può sempre scrivere come 2 a +1 = p + q + 1. Ora q+1 è pari perché q è primo e dispari quindi per la congettura forte di Golbach devono esistere due primi r, s tali che q +1 = 2b = r+s. Alla fine troviamo che 2 a +1 = p+r+s con p, r, s tutti numeri primi.
Questa semplice dimostrazione ci suggerisce un metodo per cercare tutte le terne di goldbach di un numero dispari 2 a +1.

Dapprima si trovano tutti i primi p, q tali che 2 a = p+q (si può fare con uno dei programmi  che abbiamo scritto in articoli precedenti). Si prende q e si calcola 2b = q+1 che è un numero pari e quindi si cercano tutte le coppie r, s di primi tali che 2b = r+s alla fine otteniamo che 2 a+1=p+r+s

esempio 13
12 = 13-1  = 7+5
5+1 = 6 = 3+3
allora 13 = 7+3+3

esempio 13
12 = 7+5
7+1 = 8 = 5+3
13 = 5+3+5

domenica 8 settembre 2013

Didattica on line

idea: usare Facebook come una piattaforma e-learning. Costruire un nuovo gruppo e chiamarlo con il nome del corso. Le iscrizioni al gruppo sono vincolate alle iscrizioni al corso (quindi non è un gruppo libero ma chiuso). Gli studenti vedono i video delle lezioni e scaricano i file che sono stati caricati dal docente tutor.