1、,相关算法,目录,“筛选法“求素数 杨辉三角 魔方阵 最大公约数和最小公倍数(GCD and LCM) 完数(perfect numbers ),“筛选法“求素数,素数:除了表示为它自己和1的乘积以外,无论他表示为任何两个整数的乘积 所谓“筛选法”指的是“埃拉托色尼(Eratosthenes)筛法”。他是古希腊的著名数学家。他采取的方法是,在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数,找出一个非素数,就把它挖掉,最后剩下的就是素数。,具体做法如下: 先将1挖掉(因为1不是素数)。 用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。 用3去除它后面的各数,把3的倍数
2、挖掉 分别用4、5各数作为除数去除这些数以后的各数。,这个过程一直进行到在除数后面的数已全被挖掉为止。例如找150的素数,要一直进行到除数为47为止(事实上,可以简化,如果需要找1n范围内素数表,只需进行到除数为 ,取其整数即可。例如对150,只需进行到将7作为除数即可。,素数判断法,素数判断法 考虑到这么一个现实:任何一个合数都可以表现为适当个素数的乘积的形式,所以我们只用素数去除要判断的数即可,比如要判断100以内的素数,只用2,3,5,7就够了,10000以内的数用100以内的素数判断足以。,依次相除求余法,最简单的从2sqrt(N)的方法(N=2,下同)依次去对N求余,只要有一个余数是
3、0,则N是 素数。,杨辉三角,杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。 简单的说一下就是两个未知数和的幂次方运算后的系数问题 ,即(x+y)n展开后的系数 如果我们用f(n,k)表示杨辉三角的第n行的第k个元素,则上边的性质可以表示成 公式为: f(n,k) =1 (k=0或者n=k) f(n,k) =f(n-1,k-1)+f(n-1,k),魔方阵,魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2n的平方的nn的方阵,其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。,奇阶魔方阵 布阵规律为: 把1放在N*N
4、方阵中的第一行中间一列,即放在位置为(1,(N+1)/2); 后一个数存放的行数比前一个数存放的行数减1,若这个行数为0,则取行数为N; 后一个数存放的列数比前一个数存放的列数加1,若这个列数为N+1,则取列数为1; 如果前一个数是N的倍数,则后一个数存放的列数不变,而行数加1。,最大公约数和最小公倍数(GCD Greatest common divisor and LCM least common multiple ),几个数公有的因数,叫做这几个数的公因数;其中最大的一个,叫做这几个数的最大公因数。自然数a、b的最大公因数可记作(a,b)。 几个数公有的倍数,叫做这几个数的公倍数;其中最小
5、的一个,叫做这几个数的最小公倍数。自然数a、b的最小公倍数可记作a,b。 两个数的最大公因数与最小公倍数有如下的关系: 最大公因数最小公倍数=两数的乘积。,辗转相除法求GCD 当两个数都较大时,采用辗转相除法比较方便其方法是: 以小数除大数,如果能整除,那么小数就是所求的最大公约数否则就用余数来除刚才的除数;再用这新除法的余数去除刚才的余数依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数,求4453和5767的最大公约数时,可作如下除法 576744531余1314 445313143余511 13145112余292 5112921余219 2922191余73 219733 于是得知,5767和4453的最大公约数是73,完数(perfect numbers ),算法思想 将m依次除以1m/2,如果能能整除,就是m的一个因子,进行累加;循环结束,若m与累加因子之和相等,m就是完数,