1、 m=n; n=r; while(n); printf(greatest common divisor is %dn,m); return 0;封装函数int gcd(int m,int n) do r=m%n; return m;调用函数 int gcd(int m,int n); gcd(int m,int n);方法二:更相减损法两个数,用较大的数减去较小的数,所得差与较小的数记为新的两个数,再重复之前的过程,直到两个数相等,这时这两个数就是最大公约数。int main() int m,n; while(m!=n) if(mn) m-=n; else n-=m; printf(int g
2、cd(int m,int n) while(m! return m;,gcd(m,n);2求两个数最小公倍数两个数,从较大的数开始,依次找能同时整除这两个数的整数,这个整数就是这两个数的最小公倍数。int main() int m,n,i; for(i=(mnm:;i+) if(i%m=0 & i%n=0) printf(lease common multiple is %d,i); break; return 0;int lcm(int m,int n) int i; i%n=0) return i; int lcm(int m,int n);,lcm(m,n);3判断素数从2开始到所求整数
3、的开方依次求余,如果有能整除所求整数的整数,则所求整数为合数,反之为素数。int main() int num; int i,k,flag=1;%dnum); k=sqrt(num); for(i=2;i=k;i+) if(num%i=0) printf(%d isnt a prime number!,num); flag=0; if(flag) printf(%d is a prime number!int sushu(int num) int i,k;i+) if(num%i=0) return 0; return 1; int sushu(int num); if(sushu(num)=
4、0) printf( else printf(4冒泡排序(升序)N个数,每次比较相邻的两个数,如果前面的数大就相互交换,这样小的数就会像气泡一样往前冒。一趟排序完成后最后一个数最大。共进行N-1趟排序。 #define N 10int main() int numN; int i,j; int t; for(i=0;N;i+) scanf(numi);N-1;i+) for(j=0;jnumj+1) t=numj;numj=numj+1;numj+1=t; for(i=0;i+) printf(%d ,numi);void maopao(int numN) int i,j; void maop
5、ao(int numN); maopao(num);5选择排序(升序)N个数,每次从剩下的数中选择最小的数(记住它的下标)与这组数中最前面的数交换,数的个数依次减少。一趟排序完成后最前面的数最小。 int i,j,k;i+) k=i; for(j=i+1;j+) if(numknumj) k=j; if(k!=i) t=numk;numk=numi;numi=t; for(i=0;void xuanze(int numN) int i,j,k; void xuanze(int numN); xuanze(num);6折半查找(升序)N个按照从小到大排列好顺序的数,再从中寻找一个数,不是依次扫描
6、每个数,而是先把这组数的中间元素拿出来与所找的数比较,如果中间数小于所找的数,则在这组数的后半段寻找;如果中间数大于所找的数,则在这组数的前半段寻找。找到了,输出这个数的下标,如果找不到,输出Not found!。#define N 10int main() int aN,low=0,high=N-1,mid,i,key,flag=0;ai);key); while(lowkey) high=mid-1; else low=mid+1; if(!flag) printf(Not found!);int zheban(int aN,key) int low=0,high=N-1,mid; ret
7、urn mid; return -1; int zheban(int aN,key); zheban(a,key);7找最大数(1)两个数找最大比较两个数,输出较大者。int main() int x,y,z;x,&y); z=xyx:y;,z);int max(int x,int y) int z; return z; int max(int x,int y);,max(x,y);(2)数组中找最大一维数组让一个变量等于数组中第一个元素,从第二数开始依次进行比较,碰到更大的数则更改变量的值,直到全部比较完毕。 int i,max; max=num0; for(i=1;i+) if(maxnumi) max=numi;max);int max(int num
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1