1、霍纳法则 解决计算多项式复杂度的一个算法
y =
procedure Horner
y = 0
for i = n to 0
y = ai + y*x
2、任意大于1的整数都可以唯一写成两个或多个素数的乘积。
3、如果n是一个合数,那么n必有小于或等于根号n的一个素因子。
4、下面的公式是求最大公约数,其原理可以参照2
5、最小公倍数 lcm 表示
其实 亦可 lcm(a,b)= a*b /lcd(a,b) ;
6、伪随机数 ,结果生成了一个多G的文件,而且还没完,
# include<stdio.h>
# include<math.h>
/* xn+1 = (a*xn + c) mod m */
int main()
{
freopen("myout.txt","w",stdout);
long m = long(pow(2,31) -1 );
long a = long(pow(7,5)) ;
long c = 0;
long x = 1;
long count = 0;
while(++count < m)
{
x = (a*x + c) % m ;
printf("%ld ",x);
}
return 0;
}
7 、gcd(a,b)= sa + tb; 存在整数 s t 使这个等式成立。这个其实是由欧几里得算法演变过来的
如 :gcd(252,198)= 18;
252 = 1 * 198 + 54 ---1
198 = 3 * 54 + 36 ----2
54 = 1 * 36 + 18 --------3
36 = 2 * 18 + 0 其中18 是第一个非0的余数 即 18 是他们的最大公约数
那么 现在要用 18 = s*252 + t *198 来表示,其实只需要上述等式的逆运算
由 3式 知 18 = 54 – 36 ;由2式 可以推出 36 的表达 36 = 198 – 3 * 54, 1 式 推出 54用 252 的表达 : 54 = 252 - 1*198,最后
18 = 4*252 - 1*198 。
http://www.fuxiang90.me/?p=188 我独立博客的地址 欢迎访问
posted on 2011-06-26 21:32
付翔 阅读(361)
评论(0) 编辑 收藏 引用 所属分类:
ACM 数论