/* * Primality with Fractions (Gaussian) * * Author : Rosario Turco * Date : 23/12/2009 * Revision : 1.0 */ /* * Period of a fraction with * gaussian function * * */ GaussN(n)= local(g=0, r=1); { while( Mod(n,2) == 0, n = n/2;); while( Mod(n,5) == 0, n = n/5;); while( g == 0 | r != 1, r = Mod(( 10 * r), n); g = g + 1; ); return(g); } /* * IsComposite ? * -1 Boh * 1 Yes * 0 No (it's a prime number) * * */ isCompN(n)= local(g=0, status=-1); { g = GaussN(n); print("gaussiano(",n,") = ", g); if( g == n-1, status=0; print("No, it's a prime number!"); return(status); ); if( g != 1, if( frac((n-1)/g) != 0.0, status = 1;); ); if( status == 1, print("Yes, it's a composite number!");); return(status); } /* * IsMyPrime ? * 1 Yes * 0 No * * */ isMyPrime(n)= local(status=0); { if( eulerphi(n) == n-1, status=1;); return(status); } /* * * AntiPeriod of a fraction with * */ AntPerN(n)= local(d2=0, d5=0); { while( Mod(n,2) == 0, n = n/2; d2=d2+1); while( Mod(n,5) == 0, n = n/5; d5=d5+1); return(max(d2,d5)); }