1、封装函数intgcd(intm,intn)returnm;调用函数intgcd(intm,intn);gcd(intm,intn);方法二:更相减损法两个数,用较大的数减去较小的数,所得差与较小的数记为新的两个数,再重复之前的过程,直到两个数相等,这时这两个数就是最大公约数。intm,n;while(m!=n)if(mn)m-=n;elsen-=m;,gcd(m,n);2求两个数最小公倍数两个数,从较大的数开始,依次找能同时整除这两个数的整数,这个整数就是这两个数的最小公倍数。intm,n,i;for(i=(mn?m:;i+)if(i%m=0&i%n=0)leasecommonmultiple
2、is%d,i);break;intlcm(intm,intn)inti;returni;intlcm(intm,intn);,lcm(m,n);3判断素数从2开始到所求整数的开方依次求余,如果有能整除所求整数的整数,则所求整数为合数,反之为素数。math.hintnum;inti,k,flag=1;%dnum);k=sqrt(num);for(i=2;i=k;if(num%i=0)printf(%disntaprimenumber!,num);flag=0;if(flag)printf(%disaprimenumber!intsushu(intnum)inti,k;if(num%i=0)ret
3、urn0;return1;intsushu(intnum);if(sushu(num)=0)printf(elseprintf(4冒泡排序(升序)N个数,每次比较相邻的两个数,如果前面的数大就相互交换,这样小的数就会像气泡一样往前冒。一趟排序完成后最后一个数最大。共进行N-1趟排序。#defineN10intnumN;inti,j;intt;for(i=0;N;numi);N-1;for(j=0;jnumj+1)t=numj;numj=numj+1;numj+1=t;,numi);voidmaopao(intnumN)voidmaopao(intnumN);maopao(num);5选择排序(
4、升序)N个数,每次从剩下的数中选择最小的数(记住它的下标)与这组数中最前面的数交换,数的个数依次减少。一趟排序完成后最前面的数最小。inti,j,k;k=i;for(j=i+1;if(numknumj)k=j;if(k!=i)t=numk;numk=numi;numi=t;voidxuanze(intnumN)voidxuanze(intnumN);xuanze(num);6折半查找(升序)N个按照从小到大排列好顺序的数,再从中寻找一个数,不是依次扫描每个数,而是先把这组数的中间元素拿出来与所找的数比较,如果中间数小于所找的数,则在这组数的后半段寻找;如果中间数大于所找的数,则在这组数的前半段
5、寻找。找到了,输出这个数的下标,如果找不到,输出Notfound!。intaN,low=0,high=N-1,mid,i,key,flag=0;ai);key);while(lowkey)high=mid-1;elselow=mid+1;if(!flag)printf(Notfound!);intzheban(intaN,key)intlow=0,high=N-1,mid;returnmid;return-1;intzheban(intaN,key);zheban(a,key);7找最大数(1)两个数找最大比较两个数,输出较大者。intx,y,z;x,&y);z=xy?x:y;,z);intm
6、ax(intx,inty)intz;returnz;intmax(intx,inty);,max(x,y);(2)数组中找最大一维数组让一个变量等于数组中第一个元素,从第二数开始依次进行比较,碰到更大的数则更改变量的值,直到全部比较完毕。inti,max;max=num0;for(i=1;if(maxcharch101;%s,ch);/或gets(ch);voidInput_Big_Num(charch101)voidInput_Big_Num(charch101);Input_Big_Num(ch);(2)大整数的处理将大整数个位到最高位放在下标从0开始的整形数intdata100;intl
7、en,i;len=strlen(ch);len;datai=chlen-i-1-0intChuli_Big_Num(charch101,intdata100)datai=ch1len-i-1-returnlen-1;charch101=0;intdata100=0;intChuli_Big_Num(charch101,intdata100);Chuli_Big_Num(ch,data);将大整数最高位到个位放在下标从0开始的整形数datai=chi-intChuli2_Big_Num(charch101,intdata100)datai=ch1i-intChuli2_Big_Num(charc
8、h101,intdata100);(3)大整数的输出for(i=len-1;i=0;i-),datai);voidOutput_Big_Num(intdata100,intweishu)for(i=weishu-1;intweishu;voidOutput_Big_Num(intdata100,intweishu);weishu=Chuli_Big_Num(ch,data);Output_Big_Num(data,weishu);(4)大整数的加法(两个大整数相加)charch1101=,ch2101=intdata1100=0,data2100=0,data3101=0;intlen1,le
9、n2,len,i,jinwei=0;,ch1);/或gets(ch1);,ch2);/或gets(ch2);len1=strlen(ch1);len1;data1i=ch1len-i-1-len2=strlen(ch2);len2;data2i=ch2len-i-1-100;data3i=data1i+data2i+jinwei;jinwei=data3i/10;data3i=data3i%10;for(i=100;if(data3i!=0)len=i;for(i=len;,data3i);intPlus_Big_Num(intdata1100,intdata2100,intdata3101)inti,jinwei=0;data3
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2