ACM入门之数论基础 幻灯片.pptVIP

  • 3
  • 0
  • 约2.22千字
  • 约 16页
  • 2017-09-25 发布于浙江
  • 举报
ACM入门之数论基础 幻灯片

数论 Butterfly0923 doraemonok 求素数方法 1)p[N]存储所有的素数,二重循环,用已经求出的不大于平方根的所有素数试除 for(i=2;in;++i) for(j=0;jm p[j]*p[j]=n;++j) 如果p[j]整除i,则i不是素数 如果都不能整除,则i是素数,添加到素数列表p[N]; 素数 2)增加布尔型数组b[N]记录是否为素数,初始化所有值=1,从头开始遍历,如果b[i]==1,则i是素数,将所有的i的倍数j均修改为b[j]=0 for(i=2;in;++i) 如果b[i]==1则添加到素数列表p[],然后利用循环for(j=i;jn;j+=i) b[j]=0将i的所有倍数删掉 思考:试比较两种方法效率 大数的素性检测 Rabin-Miller素数测试 非素数通过测试概率为 ? Pollard-ρ算法 大数的快速分解 二分法in乘方 如何计算a^n ? 1)计算a*a*a*…*a*a*a,需要计算n-1次乘法,时间复杂度O(n) 2)考虑实例a^4,计算b=a*a,再算c=b*b,则c=a^4,但是只用了两次乘法,效率提高。比如a^9=a*(a^4)*(a^4),只需用4次乘法,一般的,a^n时间复杂度为O(logn) 二分法in乘方 第二种算法与二进制的关系 9=(1001)2, a^9=(((1^2*a))^2^2^2)*a 10=(

文档评论(0)

1亿VIP精品文档

相关文档