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