付翔的专栏
在鄙视中成长 记录成长的点滴
posts - 106,  comments - 32,  trackbacks - 0

1、霍纳法则 解决计算多项式复杂度的一个算法

     y = clip_image002[4]

     procedure Horner

     y = 0

     for i = n to  0

     y =   ai + y*x  

2、任意大于1的整数都可以唯一写成两个或多个素数的乘积。

3、如果n是一个合数,那么n必有小于或等于根号n的一个素因子。

4、下面的公式是求最大公约数,其原理可以参照2

clip_image002 

5、最小公倍数 lcm 表示

clip_image002[4] 其实 亦可 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 付翔 阅读(359) 评论(0)  编辑 收藏 引用 所属分类: ACM 数论

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

CSDN - 我的blog地址

博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜