- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
结构化程序设计 筛选算法 设计技术 应用
福建工程学院计算机与信息科学系
实验报告– 2012 学年第 二 学期 任课老师: 章 静
课程名称 结构化程序设计 班级 计1002 座号 3100305126 姓名 王文杰 实验题目 筛选算法设计技术的应用 实验时间 实验开始日期:2012年3月20日 报告提交日期:2012年4月1日 实验目的、要求
实验题目
设计程序求任意给定范围之间的素数。答优的同学要设计出优化算法!
实验要求
1.该实验的课内学时是4个课时。
实验步骤与内容 按如下顺序写:
主要设计思想;
筛选策略是在一个包含所有解的(有限)集合中,删去不符合要求的元素,留下的就是所要求的解。这种方法犹如将掺有沙子的豆子,用网眼大小适当的筛子筛一下,把沙子筛走,留下的就是干净的豆子一样,所以叫做筛选策略。例用筛选法求2~100之间的所有素数。解:我们用下面的方法来解这题:先建立一个含有2~100之间所有自然数的数表,在数表中删去2的倍数(不包括2);然后找2后面第一个被保留的数p(是3),再删除p的倍数(不包括p);然后再找下一个被保留的数(是5),继续上述步骤:这样继续下去,直至P大于100为止。这样数表中剩下的数就是所要求的所有素数。这个求素数的方法称为爱拉托散(Eratosthenes)法。nt data[100005];中初始化所有元素为0,然后将整数相乘作为下标,对应data数组中下标的元素赋值为-1(非素数)。
所有函数的简要说明;
void input(int *min,int *max);//输入函数
void prime(int *data,int dataLen);//将相应范围内数组中的非素数下标的值赋为-1
void print(int *data,int dataLen,int min);//输出相应范围内非-1元素的下标,即为素数。
所有源代码;
#include string.h
#include stdio.h
void input(int *min,int *max);
void prime(int *data,int dataLen);
void print(int *data,int dataLen,int min);
int main()
{
int min,max;
int data[100005];
while(1)
{
input(min,max);
memset(data,0,sizeof(int)*max);
prime(data,max);
print(data,max,min);
}
return 0;
}
void input(int *min,int *max)
{
printf(请输入你要查找的范围(用逗号隔开逗号):);
scanf(%d,%d,min,max);
}
void prime(int *data, int dataLen)
{
int i,j;
for(i=2;i=dataLen;i++)
{
for(j=2;i*j=dataLen;j++)
if(data[i*j]==0) data[i*j]=-1; else continue;
}
}
void print(int *data, int dataLen,int min)
{
int i;
printf(该范围内的素数如下:\n);
for (i=2;i=dataLen;i++)
{
if (data[i]==0)
if(i=min) printf(%d ,i);
}
printf(\n);
}
试验过程记录 记录试验中遇到的困难及解决方法;
在编码、调试过程中刚开始忽略了0、1和2的特殊性判断以及范围最后一个数的判断,造成了一些错误,通过反复的实验修改后正确。
实验结果记录以及与预期结果比较以及分析 记录每次实验结果以及分析情况
总结以及心得体会
通过本次实验,我掌握了筛选算法的使用,开拓了视野,学会了用不同的方法解决素数问题。提高了解决问题的效率。在实验过程中我遇到了很多问题。我通过反复的实验调试最终完美的解决了。
指导老师评阅意见 指导老师: 年 月 日 填写内容时,可把表格扩大。实验的源程序代码(要有注释)附在表后。
1
文档评论(0)