C語言——求兩個數的最大公約數和最小公倍數
求兩個數的最大公約數的常用方法:
※“輾轉相除法”,又名歐幾里得演算法。基本方法如下:
設兩數為a和b(a>b),用a除以b,得a÷b=q......r,若r=0 ,則最大公約數為b;若r≠0 ,則再用b÷r,得b÷r=q......r',若r'=0,則最大公約數為r',若r'≠0,則繼續用r÷r'......直到能夠整除為止,此時的除數即為最大公約數。
例如:a=99,b=18。a÷b=99÷18=5......9不能整除,則繼續b÷r=18÷9=2可以整除,則此時的除數9即為a和b兩數的最大公約數。
①程式碼如下:
#include <stdio.h> int main() { int a = 0; int b = 0; int t = 0; scanf("%d%d", &a, &b);//99,18 while (a%b != 0){ t = a%b; a = b; b = t; } printf("最大公約數為:%d\n", b); return 0; }
首先,從鍵盤鍵入兩個數a和b的值,變數t來儲存餘數。用while迴圈來判斷能否整除,根據“輾轉相除法”,先用第一個數a÷b再將除數b賦給a,餘數賦給b,迴圈往復,直到能整除時結束迴圈,此時的除數b即為最大公約數。
(特別說明:若a<b,例如a=18,b=99。t=a%b=18;a=99;b=t=18。我們發現通過一次迴圈交換了a、b的值,這時就能滿足a>b的條件了,在繼續根據輾轉相除的方法即可得到最大公約數。)
※拓展:求兩個數的最小公倍數
關於最小公倍數與最大公約數,有這樣的定理:最小公倍數×最大公約數=兩數的乘積。
即:最小公倍數=兩數的乘積÷最大公約數
②程式碼如下:
#include <stdio.h> int main() { int a = 0; int b = 0; int t = 0; scanf("%d%d", &a, &b);//18 99 int m = a; int n = b; while (a%b != 0){ t = a%b;//餘數 9 a = b;//18 b = t;//9 } printf("最大公約數為:%d\n", b);//9 printf("最小公倍數為:%d\n",m*n/b); return 0; }
首先,從鍵盤鍵入兩個數a和b的值,變數t來儲存餘數。再設兩個變數m、n來儲存a、b的原值。
先根據輾轉相除法求出最大公約數b'(過程同①),再由最小公倍數=兩數的乘積÷最大公約數=m×n÷b'求得最小公倍數。
相關推薦
C語言求兩個數的最大公約數和最小公倍數
輾轉相除法, 又名歐幾里德演算法(Euclidean algorithm),是求最大公約數的一種方法。它的具體做法是:用較小數除較大數,再用出現的餘數(第一餘數)去除除數,再用出現的餘數(第二餘數)去除第一餘數,如此反覆,直到最後餘數是0為止。如果是求兩個數的最
C語言——求兩個數的最大公約數和最小公倍數
求兩個數的最大公約數的常用方法:※“輾轉相除法”,又名歐幾里得演算法。基本方法如下:設兩數為a和b(a>b),用a除以b,得a÷b=q......r,若r=0 ,則最大公約數為b;若r≠0 ,則再用b÷r,得b÷r=q......r',若r'=0,則最大公約數為r',若
C語言經典例子,求兩個數的最大公約數和最小公倍數
求兩個數的最大公約數,我們首先可以想到輾轉相除法,即用最大的數除以小的數,得到以後的餘數,再用上次較小的數繼續除以餘數,直到餘數為0.最後剩下的最小數即為最大公約數。 例如,16,10,求最大公約數。 16%10=4(餘數) 10
C語言如何求兩個數的最大公約數和最小公倍數。
void Gyueshu(int max, int min) { int i = 0, temp = 0; if (max < min) //判斷並交換兩個數的大小 { temp = max; max = min; min =
c語言:求兩個數的最大公約數和最小公倍數
#include<stdio.h> int main() { int a,b,t,r; printf("請輸入兩個數字:\n"); scanf("%d %d",&a,&b); if(a<b) {t=b
C語言分別求兩個整數的最大公約數和最小公倍數
#include <stdlib.h> #include <math.h> #include <stdio.h> //遞迴演算法 //歐幾里得演算法 void GCD(int a, int b) { int temp;
C語言例項—輸入兩個正整數m和n,求其最大公約數和最小公倍數(gcc 編譯)。
1.輾轉相除法 輾轉相除法是古希臘求兩個正整數的最大公約數的,也叫歐幾里德演算法,其方法是用較大的數除以較小的數,上面較小的除數和得出的餘數構成新的一對數,繼續做上面的除法,直到出現能夠整除的兩個數,其中較小的數(即除數)就是最大公約數。以求288和123的最大公約數為例,操作如下: 288÷1
c++中求兩個數的最大公約數和最小公倍數(輾轉相除法)
輸入兩個正整數m和n,求其最大公約數和最小公倍數 #include "stdafx.h" #include<iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) {
鍵入兩個數,求其最大公約數和最小公倍數----初學c
#include <stdio.h> void fun1(int *x,int *y); //將兩個數比較大小,使x>y void fun2(int *a,int *b); //輾轉反側法 void main() { /*定義變數*
C#基礎:求兩個數的最大公約數和最小公倍數
int number1 = 0; int number2 = 0; Console.WriteLine("請輸入兩個整數:"); number1 = int.Parse(Console.ReadLine()
c語言:輸入兩個正整數m和n,求其最大公約數和最小公倍數
輸入兩個正整數m和n,求其最大公約數和最小公倍數。解:程式:#include <stdio.h>int main(){int num1, num2, t,p;printf("請輸入兩個正整數
C語言例項12——輸入兩個正整數m和n,求其最大公約數和最小公倍數。
題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。 //程式分析:利用輾除法。 #include<stdio.h> int main(){ int a,b,num1,num2,te
C語言:寫兩個函式,分別求兩個最大公約數和最小公倍數
題目:寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這個兩個函式,並輸出結果。兩個整數由鍵盤輸入 分析:求最大公約數,需要用到輾轉相除法: 輾轉相除法:設兩數為a、b(a>b
C/C++程式設計題之求兩個數的最大公約數和最小公倍數
求兩個數的最大公約數和最小公倍數 方法:最大公約數使用輾轉相除法求,最小公倍數等於兩個數的乘積/最大公約數 輾轉相除法的原理:用輾轉相除法求幾個數的最大公約數,先求出其中任意兩個數的最大公約數,再
C語言之函式呼叫07—求4個數的最大公約數和最小公倍數
//函式呼叫 /* ========================================================== 題目:求4個數的最大公約數和最小公倍數。 ===============================================
求兩個數的最大最大公約數和最小公倍數
兩個 rem pac [] while ext bre list AS package java; import java.util.ArrayList; import java.util.List; import java.util.Scanner; pu
求兩個數的最大公約數和最小公倍數
esp long cout gcd urn clas 代碼 () else 求最大公約數利用輾轉相除法: long long gcd(long long a,long long b) { if(b==0) return a; else
C語言輾轉相除/相減法(歐幾里得演算法)求最大公約數和最小公倍數
#include <stdio.h> #include <stdlib.h> //題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。 //採用任何兩種演算法來完成上述題目,並比較2種演算法的時間複雜度和空間複雜度。 int main() { int
【經典100題】 題目16 求兩個數的最大公約數和最小公倍數
題目 求兩個數的最大公約數和最小公倍數。 最大公約數:指兩個或多個整數共有約數中最大的一個 最小公倍數:指兩個或多個整數共有倍數中最小的一個 說明:自己沒有搞清楚最大公約數和最小公倍數的定義,結果走了不少彎路,下面的解法是一種比較簡單但是效率的不高的解法。可以參考“輾除法”,在後續會
用c語言求最大公約數和最小z公倍數的函式
1. ```#include<stdio.h> #include<stdlib.h> int fun(int a,int b) { int i,t,n,f; f=a*b; if(a<b) {t=a; a=b; b=t; } while(b!=0) {n=a