辗转相除法求最大公约数

对于x,y,假设它俩有一个最大公因数T,则(nx+my)%T==0

原因:x=T+T+T+T+T····· y=T+T+T+T+T······

x/y=v······w

-->x=v*y+w

-->w=1x+(-v)y 即x%y的余数也能够被最大公因数整除

x>y-->x=x%y y-->y=y%x

#include<stdio.h>int main(){    int x = 75, y = 100;    int z = 0;    while (z = x % y)    {        x = y;        y = z;    }    printf("%d", y);    return 0;}

使用二分查找法在整形有序数组中查找某个数

!!!使用二分查找法必须要是有序数组

第一点:首先要确定数组的长度,使用sizeof(arr) / sizeof(arr[0])来确定

第二点:最左边下标为start,最右边为end,中间为 int min=(start+end)/2

第三点:判断这个数(a)和二分排序法确定的中间数(mid)的大小

​ 若a > arr[mid]---->则a的下标与数组左半边无关系,即start = mid+1

​ 若a < arr[mid]---->则a的下标与数组右半边无关系,即start = mid-1

#include<stdio.h>int main(){    int arr[] = { 1,5,8,42,55,67,78,82,93,130 };    int c = sizeof(arr) / sizeof(arr[0]);    int a = 130;    int start = 0, end = c - 1;    while (1)     {        int mid = (start + end) / 2;        if (a > arr[mid])        {            start = mid+1;          }        else if(a < arr[mid])        {            end = mid-1;        }        else        {            printf("%d", mid);            break;        }    }    return 0;}
©著作权归作者所有:来自51CTO博客作者zzy613的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 2021-04-04:给定一个非负数组arr,和一个正数m。 返回arr的所有子序
  2. 数组函数、json、ajax、cors跨域
  3. 一个细节 | Java中asList的缺陷
  4. js之数组对象与访问器
  5. 2021-04-03:给定两个字符串str1和str2,想把str2整体插入到str1中的
  6. 4-3(vector的底层实现)
  7. int|char数组在sizeof和strlen函数中的应用以及指针的应用
  8. 4-2(vector)
  9. 实例ES6演示数组,对象,传参解构; 实例演示访问器属性的get,set操作

随机推荐

  1. c语言中的函数可不可以单独进行编译?
  2. 一个c语言源程序是由什么组成
  3. c语言多行注释符号是什么
  4. c语言程序的基本结构是什么
  5. 一个c语言程序只能有一个主函数吗
  6. 为什么要学习C语言
  7. devc不能编译运行怎么办
  8. c语言自学要多久?
  9. c语言中的注释符号是什么
  10. c语言的标识符允许使用关键字吗?