数论二.ppt

上传人:99****p 文档编号:1455321 上传时间:2019-02-28 格式:PPT 页数:58 大小:349KB
下载 相关 举报
数论二.ppt_第1页
第1页 / 共58页
数论二.ppt_第2页
第2页 / 共58页
数论二.ppt_第3页
第3页 / 共58页
数论二.ppt_第4页
第4页 / 共58页
数论二.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

1、 算法艺术与信息学竞赛 标准课件数论 (二 ): 经典问题和算法刘汝佳问题 1: 大整数取余 给一个 n位的大整数 P和正整数 m 求 P mod m的值 输入 int n int digit: digit0为 P第首位, digitn-1末位 输出 int d: P mod m的值分析 公式一 : (a*b) mod m = (a mod m) * (b mod m) mod m 公式二 : (a+b) mod m = (a mod m) + (b mod m) mod m 注意 : 在两个公式中 , 都需要在最后对 m取模分析 由公式 , 可以由前 i-1位的余数 di-1推出第 i位的余

2、数 di = (di-1*10+digiti) mod m 时间复杂度 : O(n) 每个 di都只使用一次,空间复杂度 O(1)d = 0;for(i = 0; i 1 由于每个数只被用一次 , 空间是 O(1)的 问题 : dk-1*dk-1可能会 overflow! (n=105时已经会 ) 解决方法 : 使用更大的整数范围分析 下面的数据类型 LL取决于编译器 . gcc使用long long, 而 VC+使用 _int64 对于其他操作符 , 把 *d%p替换掉即可LL ans = 1, d = a % p;doif(n d = (d * d) % p;while(n = 1);问题 3: 求 1n的所有素数 求 1n的所有素数 输入 int n 输出 bool isPrime:数 i(1=i=n)是否为素数 int prime:第 i(1=i=(n+1)个素数 int primeCount:素数总数分析 假设要求 1100的素数 2是素数 , 删除 2*2, 2*3, 2*4, , 2*50 第一个没被删除的是 3, 删除 3*3, 3*4, 3*5,3*33 第一个没被删除的是 5, 删除 5*5, 5*6, 5*20 得到素数 p时 , 需要删除 p*p, p*(p+1), p*n/p, 运算量为 n/p-p, 其中 p不超过 n1/2(想一想 , 为什么 )

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 课件讲义

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。