tony\.reix on Sat, 22 Jan 2005 23:34:31 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Fw:PARI/gp : binomialmod(a,b,p) |
Hi, Would it be possible to have in Pari/gp an efficient implementation of the computation of binomials modulo a prime number ? The formula has been discovered by E. Lucas. See : http://mathworld.wolfram.com/LucasCorrespondenceTheorem.html The definition is (LaTeX -like) : binomialmod(a,b,p) : p must be prime. a = \prod_{i=0}^{a_max}{a_i*p^i} a_i < p b = \prod_{i=0}^{b_max}{b_i*p^i} b_i < p binomialmod(a,b,p) \equiv \prod_{i=0}^{min(a_max,b_max)}{binomial(a_i,b_i)} (mod p) Here is a simple PARI/gp program: binomialmod(a,b,p)= B=1; while(a!=0 && b!=0, # I think it is: && and not: || because binomial(i,0)=1 a_=a%p; b_=b%p; a =(a-a_)/p; b =(b-b_)/p; B =(B*(binomial(a_,b_)%p)%p) ); return(B) 10th first values modulo 7 : tb(a,p)=for(i=0,a,print1(i); for(j=0,i,print1(" ", binomialmod(i,j,p))); print) ? tb(10,7) 0 1 1 1 1 2 1 2 1 3 1 3 3 1 4 1 4 6 4 1 5 1 5 3 3 5 1 6 1 6 1 6 1 6 1 7 1 0 0 0 0 0 0 1 8 1 1 0 0 0 0 0 1 1 9 1 2 1 0 0 0 0 1 2 1 10 1 3 3 1 0 0 0 1 3 3 1 Regards, Tony Accédez au courrier électronique de La Poste : www.laposte.net ; 3615 LAPOSTENET (0,34?/mn) ; tél : 08 92 68 13 50 (0,34?/mn)