求其啦~是但啦~20101219
在标题上打个日期。。。有点多余~
不知道为什么,心血来潮,想写点东西。。
但真正要写了,又不知道写什么。。
本来今天自习了一天,挺满足的。。。
晚上,疯子问我有限域的内容,不会,感觉那个下午白看了~
最怕这种感觉,似懂,又非懂,尤其在数学上~
挺喜欢数学的,有机会重来的话,说不定就学数学了。。。
但现在,一学期三门数学,讲得飞快。。。
完全为考试而学的样子,不求甚解。。。
很怀念印象中那种属于数学的感觉,很奇妙~
可惜,被糟蹋了。。。
想起两部电影,香港拍的,觉得不错。。。
童梦奇缘,还有麦兜故事。。。
在我看来,不错,就是让人回味。。。
总试图参透出当初没看到的内涵~
那些谁都知道的道理~
到了这个年纪,想的就多了~
发情期,好像大家都这样。。。
自己写的split函数
int split(char *text,char *x,char **output) { int textlen,xlen,//后面初始化 pointer=0,//"text"的偏移 n=0;//output的个数 textlen=strlen(text); xlen=strlen(x); while(1) { char *p, *t; p=strstr(text+pointer,x); if(NULL!=p)*p=0; t=(char *)malloc(sizeof(char)*strlen(text+pointer)+4); strcpy(t,text+pointer); output[n++]=t; pointer=p+xlen-text; if(NULL==p)break; } return n; }
数论相关算法(未完)
辗转相除法最大公约数:
//要求a,b不同时为零 int gcd(int a,int b) { if(!b)return a; else return gcd(b,a%b); }
利用最大公约数求最小公倍数:
int lcm(int a,int b) { if(!(a*b))return 0; else return a*b/gcd(a,b); }
求:
int modExp(int a,int b,int n) { int t=1,y=(a%n+n)%n; while(b) { if(b%2==1)t=t*y%n; y=y*y%n; b/=2; } return t; }
扩展的Euclid算法:
//返回a,b的最大公约数d,并使ax+by=d int ExtEuclid(int a,int b,int *x,int *y) { int d,tmp; if(b==0) { *x=1; *y=0; return a; } d=ExtEuclid(b,a%b,x,y); tmp=*x; *x=*y; *y=tmp-a/b*(*x); return d; }
解线性同余方程:
//返回最小的x...通解是X=x(mod n/d) int modularLinerEquation(int a,int b,int n) { int x,y,d; d=ExtEuclid(a,n,&x,&y); if(b%d!=0)return -1; // no solution x=b/d*x; x=(x%(n/d)+(n/d))%(n/d); return x; }
用中国剩余定理解同余方程组:
//用中国剩余定理解线性同与方程组$a\equiv b_i(\mod m_i)$ int solModularEquations(int b[],int m[],int z) { int M=1,i,y,result=0; for(i=0;i<z;i++)M*=m[i]; for(i=0;i<z;i++) { y=modularLinerEquation(M/m[i],1,m[i]); result=(result+y*b[i]*M/m[i])%M; } return result; }
Miller-Rabin测试:
//Miller-Rabin素性测试 //令大奇数$n=2^lm+1$,其中l非负整数,m为正奇数. //若$b^m\equiv 1(\mod n)$或者$b^{2^jm}\equiv -1(\mod n)$ ,0<=j<=l-1 //则称n通过以b为基的miller-rabin测试 int passMillerRabinTest(int n) { int l,m; m=n-1; l=0; while(m%2==0) { l++; m/=2; } b=rand()%(n-1)+1; if(modExp(b,m,n)==1)return 1; int i,k; k=m; for(i=0;i<l;i++) { if(modExp(b,k,n)==n-1)return 1; k*=2; } return 0; }