對於x,y,假設它倆有一個最大公因數T,則(nx+my)%T==0數組
緣由:x=T+T+T+T+T····· y=T+T+T+T+T······ide
x/y=v······w code
-->x=v*y+w排序
-->w=1x+(-v)y 即x%y的餘數也可以被最大公因數整除it
x>y-->x=x%y y-->y=y%xio
#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; }
!!!使用二分查找法必需要是有序數組class
第一點:首先要肯定數組的長度,使用sizeof(arr) / sizeof(arr[0])來肯定di
第二點:最左邊下標爲start,最右邊爲end,中間爲 int min=(start+end)/2view
第三點:判斷這個數(a)和二分排序法肯定的中間數(mid)的大小vi
若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; }