- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
201lenovo-01-素数.ppt
素数 郑途 2015-4-23 问题描述 ★实验任务 输入一个数,它是由三个1000 以内的质数相乘而得,要求从小到大输出这三个素数。 ★数据输入 输入n ★数据输出 输出三个质数。 输入示例输出示例 30 2 3 5 对问题的理解和分析 输入的数n可以因式分解为3个整数,每个质数都是1000以内的质数,只需找出1000以内的所有质数,从最小的质数开始判断,如果能被n整除,则输出,并把商赋值给n,继续循环即可。 用素数筛选法找质数 for(i=2;i1000;i++){ ?? ????????if(a[i]==0){ ?? //a[i]==0 i为素数 否则为不为素数 ????????????b[k++]=i; ?? //找到素数赋值给b数组 ????????????for(j=i;j1000;j+=i){ ?? ????????????a[j]=1; ?? ????????????} ?? ????????} ?? ????} ?? 代码 #includestdio.h ?? int?main() ?? { ?? ????long?n; ?? ????int?a[1000]={0},b[500]; ?? ????int?i,j,k=1; ?? ????scanf(%d,n); ?? ????for(i=2;i1000;i++){ ?? ????????if(a[i]==0){ ?? ????????????b[k++]=i; ?? ????????????for(j=i;j1000;j+=i){ ?? ????????????a[j]=1; ?? ????????????} ?? ????????} ?? ????} ?? 修理 ★实验任务 Fresh 住在一个美丽的小村庄。那里空气清新风景优美。唯一的不足就是台风多发。一天,台风来了,fresh 住的房子遭到毁坏,有个1*L 的洞。然后fresh 请vegetable 来修理房子。已知vegetable 带来n 块1*li 的木板和一把锯子。请问vegetable 如何修理才能使所需的木板数目最少。 ★数据输入 第一行输入两个整数L(0L100000000)和n(0=n=100000) 第二行有n 个整数,表示每块木板的长度。 ★数据输出 输出最少需要的木板数.如果不能修好输出impossible。 输入示例输出示例 5 3 1 3 2 2 对问题的理解和分析 题目就是求最少的木板数,使木板的长度和大于等于洞的长度即可。 只需将木板长度从小到大进行排序,然后将 洞的长度不断减去木板的长度(从长的木板开始)直到洞的长度小于等于0 排序可以用归并排序或qsort排序 用sort排序会发生超时,由于sort最坏的时间复杂度为o(n2),数据使sort达到了最坏情况。 排序代码 qsort法 int cmp(const void*a,const void*b){ return *(int*)a-*(int*)b; } qsort(a,n,sizeof(int),cmp); 排序代码 归并排序法 void Merge( long a[], int start, int mid , int end) { int i = start,j = mid + 1,k = start; while(i = midj = end) { if(a[i] = a[j]) { b[k++] = a[i++]; } else { b[k++] = a[j++]; } } 代码(以qsort为例) #includestdio.h #includealgorithm using namespace std; int a[100001]; int cmp(const void*a,const void*b){ return *(int*)a-*(int*)b; } int main() { long l,n; scanf(%d%d,l,n); for(int i = 0; i n; i++) scanf(%d,a+i); qsort(a,n,sizeof(int),cmp); * * int a[1000]={0},b[500]; ????for(i=1;ik;i++) ?? ????????if(n%b[i]==0) ??
您可能关注的文档
最近下载
- 运动心理学PPT完整全套教学课件.pptx VIP
- 标准图集-22G101-2现浇混凝土板式楼梯.pdf VIP
- 2025年广东省中考语文“阅读”部分试题点评.docx
- 离子交换树脂常见困扰及解决方案.docx VIP
- 小学五年级英语精通版第一单元一二课.ppt VIP
- 2025年AI in Recruiting-解锁智能招聘实践指南.docx VIP
- 汽车机械基础 滑动轴承 滑动轴承.pptx VIP
- 浙教版九年级数学上册《第一章二次函数》单元测试卷-附带答案 .pdf VIP
- YD-T 5131-2005 移动通信工程钢塔桅结构设计规范.docx VIP
- (高清版)DB32∕T 4942-2024 公共机构绿色办公区管理规范.pdf VIP
文档评论(0)