用筛法求100以内的素数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 用筛法求100以内的素数。

算法:先将1~100放置于一个一维数组中,然后依次判断每个数是否素数,若不是素数将该元素置0,最后输出不为0的数。

如何判断一个数是否素数?素数定义是只能被1和本身整除的数,设置除数n=2~a[i]-1

特殊的两个数1、2,不需要判断

定义变量:int a[100],i,n;

输入数据:循环赋值,for(i=0;i<100;i++) a[i]=i+1;

处理:双重循环,外层循环控制访问数组元素,内层循环控制除数的变化

for(i=2;i<100;i++) for(n=2;n<=a[i]/2;n++) if(a[i]%n==0) a[i]=0;

输出:for(i=0;i<100;i++)if(a[i]!=0) printf(“%3d”,a[i]);

2. 编写一个程序,计算若干学生的某门功课的平均成绩、标准差,找出最高分和最低分。算法:循环输入成绩,需要求和,然后求平均成绩;循环sqrt(求和(xi-aver)*(xi-aver))定义变量:float grade[N],max,min,aver,bzc,sum;int i;

输入数据:for(i=0;i

处理:sum=0; max=min=grade[0];for(i=0;i

if(maxgrade[i]) min=grade[i];}

aver=sum/N;

sum=0; for(i=0;i

bzc=sqrt(sum/N);

输出结果

3.编写一个程序,让计算机产生20个随机数,用选择法排序。

98 36 54 18 65 23 48 78 84 8

for(i=0;i

{p=i;for(j=i+1;ja[j]) p=j;

if(p!=i) { t=a[p];a[p]=a[i];a[i]=t;}}

设置一个变量p,去记住最小值的下标,

4. 根据上题的内容1,编一程序在数组中查找一个数。要求:

⑴若有该数,则输出该数,否则输出找不到的信息;

⑵用顺序查找实现;

⑶用折半查找实现。

顺序查找:输入要查找的数x,for(i=0;i

if(flag) printf(“zhao dao le\n”);

else printf(“Not found\n”);

如何说找不到?设置标志变量flag=0

相关文档
最新文档