最大公約數和最小公倍數求法和簡單排序

2021-09-11 20:10:06 字數 1777 閱讀 2877

判斷素數:判斷乙個數是否是素數,n不必被2~(n-1)的整數整除,只需被2~n/2之間的整數整除即可,甚至只需要被2~根號n之間的整數整除即可。

最大公約數求法:a與b的最大公約數是指能同時整除a與b的最大的整數

最小公倍數求法:a與b的最小公倍數是可以同時被a和b整除的最小整數

查詢的方法:

順序查詢:從表的一端開始,向另一端逐個進行記錄的關鍵字和給定值的比較。若某個記錄的關鍵字與給定值相等,則查詢成功,並給出記錄在查詢表中的位置;若經過比較,所有記錄的關鍵字與給定值都不相等,則查詢失敗,給出失敗資訊。

折半查詢(二分法查詢):要求查詢表中的記錄必須按關鍵字有序排列,並且查詢表必須以順序方式儲存。其查詢過程為:在有序的查詢表中,取中間位置的記錄作為比較物件,若給定值與中間位置記錄的關鍵字相等,則查詢成功;若給定值大於中間位置記錄的值,則繼續查詢大的一邊,若給定值小於中間位置記錄的關鍵字值,則繼續查詢小的一邊。依次不斷重複上述查詢過程,直到查詢成功為止。若在查詢範圍內所有記錄的關鍵字都與給定值不等,則查詢失敗。

排序的方法:

比較相鄰兩個資料,如果第乙個比第二個大,就交換兩個數;

對每乙個相鄰的數做同樣的工作,這樣從開始一隊到結尾一隊在最後的數就是最大的數;

針對所有元素做上面的操作,除了最後乙個;

重複1~3,直到順序完成。

**視覺化:

void bubblesort(int arr, int a)//氣泡排序演算法

int temp;

for (int i = 0; i < a; i++)

}} printf(arr, a);

}

在乙個長度為n的無序陣列中,第一次遍歷n-1個數找到最小的和第乙個數交換;

第二次從下乙個數開始遍歷n-2個數,找到最小的數和第二個數交換;

重複以上操作直到第n-1次遍歷最小的數和第n-1個數交換,排序完成。

演算法描述:

void selectsort(int arr, int a)//選擇排序

for (int i = 0; i < a; i++)

}} arr[i] = minkey;

}

從數列中挑出乙個元素作為基準;

重新排列數列,把所有的比基準小的放在基準前面,反之放在後面(一樣大可任意一邊)完成後基準處在分割槽的中間位置;

通過遞迴呼叫把小於基準元素和大於基準元素的子串行進行排序。

**實現:

//程式中可以通過 qsort函式呼叫

int compinc(const void* a, const void* b)//快排遞增

int compdec(const void*a, const void*b)//快排遞減

//直接使用即可

void quicksort(int left, int right)

else

//再找左邊的

while (a[i] <= temp && i < j)

//交換兩個數在陣列中的位置

if (i < j)

}} //最終將基準數歸位,放在第i個位置

a[left] = a[i];

a[i] = temp;

quicksort(left, i - 1);//繼續處理左邊的,這裡是乙個遞迴的過程

quicksort(i + 1, right);//繼續處理右邊的,這裡是乙個遞迴的過程

}

最大公約數和最小公倍數

13 05 10 15 25 最大公約數和最小公倍數的定義要弄清,程式設計思路 把兩個數中最大的數對最小的數取模運算,1.判斷最大值 2.如果num1 num2 0,最大公倍數即是小的那個數,最小公倍數及兩數相乘除以最大公約數 3.如果num1 num2!0 把較小的值賦給最大值,在把最大值取模最小...

最大公約數和最小公倍數

描述 求兩個正整數的最大公約數和最小公倍數 輸入 兩個正整數a,b 輸出 兩個正整數的最大公約數 最小公倍數 樣例輸入 4 3 樣例輸出 1 12 題目 nupt include int max int a,int b while d 1 else return 1 int min int a,in...

最大公約數和最小公倍數

眾所周知,我是好人!所以不會出太難的題,題意很簡單 給你兩個數n和m,問你有多少對正整數對最大公約數是n,最小公倍數是m 最後友情提供解題 我真是太好人了 void solve printf d n ans 祝大家ac愉快!最好ak,送某揚兌現諾言 輸入第1行是乙個整數t,表示共t組資料。接下來是t...