欢迎来到天天文库
浏览记录
ID:58886254
大小:799.50 KB
页数:83页
时间:2020-09-30
《c语言常用算法ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章常用算法的综合应用素数问题最大最小平均值问题Fibnacci数列问题最大公约与最小公倍数排序问题逆序和转置多项式问题数字分离迭代问题其他问题3.1素数问题标志变量法非正常出口法筛选法例1用标志变量法判断一个整数是否为素数。#include"math.h"#include"stdio.h"intfun(intn){inti,k=1;if(n<2)k=0;for(i=2;i<=sqrt(n);i++)if(n%i==0)k=0;returnk;}main(){inti,k=0;for(i=1;i<=100;i++)if(fun(i)==1){k++;if((k-1)%10==0)pri
2、ntf("");printf("%5d",i);}printf("");}2357111317192329313741434753596167717379838997例2用循环的非正常出口法求素数。调用函数打印[100,200]间的素数。#include"stdio.h"intfun(intn){inti;for(i=2;i<=n-1;i++)if(n%i==0)break;if(i==n)return1;elsereturn0;}main(){inti,k=0;for(i=100;i<=200;i++)if(fun(i)==1){if(k%10==0)printf("");
3、printf("%5d",i);k++;}printf("");}例3用筛选法求1000以内的全部素数,把产生的素数存放在数据文件中。筛选法是古希腊著名数学家埃拉托色尼(Eratosthenes)提出的一种批量求素数的方法,他在一张纸上写下了1~1000的全部整数,然后按照下面的方法把一些数挖掉:①先把1挖掉;②从2开始,依次用纸上剩下的数去除其后面的各数,把凡是能被整除的数再挖掉。这样,纸被挖成了一个筛子,而剩下的数就是2~1000的全部素数。#include"stdio.h"main(){inta[1001],i,j,k=0;FILE*fp;fp=fopen("E:\b1.tx
4、t","w");for(i=2;i<=1000;i++)a[i]=i;for(i=2;i<=32;i++)for(j=i+i;j<=1000;j=j+i)a[j]=0;for(i=2;i<=1000;i++)if(a[i]!=0){if(k==10){fprintf(fp,"");k=0;}fprintf(fp,"%5d",a[i]);k++;}fclose(fp);}思考:1.输出格式的控制采用了比较特别的方式,k不是一直加下去,与前面的两个例题有所不同。2.把素数的结果直接写入数据文件,如何增加适当语句使得结果同时在屏幕上也显示一份。例3-5编程序求3至39之间满足下列条件的各组
5、素数:每组有3个素数,第2个比第1个大2,第3个比第2个大4。例如5、7、11就是满足条件的一组。#include"stdio.h"main(){inti,j,k1,k2,k3;for(i=3;i<=33;i+=2){k1=1;for(j=2;j
6、下列程序中,函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。#include#includeintfun(intm)/******FOUND******/{inti;k;for(i=m+1;;i++){for(k=2;k7、,fun(n));getch();}inti,k;i%k==0k==i素数27.fun功能是:找出大于m的最小素数,并将其作为函数值返回。#includeintfun(intm){inti,k;for(i=m+1;;i++){/******FOUND******/for(k=1;k
7、,fun(n));getch();}inti,k;i%k==0k==i素数27.fun功能是:找出大于m的最小素数,并将其作为函数值返回。#includeintfun(intm){inti,k;for(i=m+1;;i++){/******FOUND******/for(k=1;k
此文档下载收益归作者所有