1樓:鍋鋼
先編寫好最大公約數和最小公倍數的函式,如下:
int ***(int a,b) //求最大公約數函式int lcm(int a,b) //求最小公約數函式然後在main()主函式中呼叫***()函式和lcm()函式即可。(注:回答者編寫的兩個函式分別為求兩個數的最大公約數和最小公倍數)。
如有錯誤,請多加原諒。
2樓:3d動畫師
# include
void main()
int fy(int x,int y)
return k;
}int fb(int x,int y)
return i;}
3樓:匿名使用者
#include
int main ()
p=n*m; //先將n和m的乘積儲存在p中, 以便求最小公倍數時用
while (m!=0) //求n和m的最大公約數
printf("hcf=%d\n",n);
是原來兩個整數的乘積
return 0;}
4樓:匿名使用者
1.計算兩個整數的最大公因子(最大公約數)的歐幾里得演算法描述:
輸入:兩個非負整數a,b,且a>=b;
輸出:a,b的最大公因子;
1).當b!=0時,做如下操作:
1.1 令r=a%b,a=b,b=r。
2).返回(a);
2.**如下:
#include
這是本人的csdn地址
5樓:匿名使用者
c語言求最大公約數和最小公
倍數(2010-03-20 22:23:46)**標籤: 雜談 分類: 程式設計
求最大公約數和最小公倍數
假設有兩個數a和b,求a,b的最大公約數和最小公倍數實際上是一個問題,得出這兩個數的最大公約數就可以算出它們的最小公倍數。
最小公倍數的公式是 a*b/m
m為最大公約數
因為a=m*i; b=m*j;
最小公倍數為 m*i*j
那麼,下面就開始計算a和b的最大公約數。
更相損減法:
《九章算術·方田》作分數約簡時,提到求最大公因數方法:反覆把兩數的較大者減去較小者,直至兩數相等,這數就是最大公因數。這方法除了把除法換作減法外,與輾轉相除法完全相同。
例如書中求91和49的最大公因數:
91 > 49, 91 - 49 = 42
49 > 42, 49 - 42 = 7
42 > 7, 42 - 7 = 35
35 > 7, 35 - 7 = 28
28 > 7, 28 - 7 = 21
21 > 7, 21 - 7 = 14
14 > 7, 14 - 7 = 7
7 = 7, 因此91和49的最大公因數是7
輾轉相除法:
輾轉相除法是利用以下性質來確定兩個正整數 a 和 b 的最大公因數的:
若 r 是 a ÷ b 的餘數, 則
***(a,b) = ***(b,r)
a 和其倍數之最大公因數為 a。
另一種寫法是:
a ÷ b,令r為所得餘數(0≤r<b)
若 r = 0,演演算法結束;b 即為答案。
互換:置 a←b,b←r,並返回第一步。
這個演算法可以用遞迴寫成如下:
function ***(a, b)
或純使用迴圈:
function ***(a, b)
return a
}其中「a mod b」是指取 a ÷ b 的餘數。
c語言:
#include
int ***(int a,int b)//最大公約數
printf("greatest ***mon divisor: %d\n", n_cup);
printf("lease ***mon multiple : %d\n", m * n / n_cup);
}else printf("error!\n");
return 0;
}★ 關於輾轉相除法, 搜了一下, 在我國古代的《九章算術》中就有記載,現摘錄如下: 約分術曰:「可半者半之,不可半者,副置分母、子之數,以少減多,更相減損,求其等也。
以等數約之。」 其中所說的「等數」,就是最大公約數。求「等數」的辦法是「更相減損」法,實際上就是輾轉相除法。
輾轉相除法求最大公約數,是一種比較好的方法,比較快。對於52317和75569兩個數,你能迅速地求出它們的最大公約數嗎?一般來說你會找一找公共的使因子,這題可麻煩了,不好找,質因子大。
現在教你用輾轉相除法來求最大公約數。先用較大的75569除以52317,得商1,餘數23252,再以52317除以23252,得商2,餘數是5813,再用23252做被除數,5813做除數,正好除盡得商數4。這樣5813就是75569和52317的最大公約數。
你要是用分解使因數的辦法,肯定找不到。那麼,這輾轉相除法為什麼能得到最大公約數呢?下面我就給大夥談談。
比如說有要求a、b兩個整數的最大公約數,a>b,那麼我們先用a除以b,得到商8,餘數r1:a÷b=q1…r1我們當然也可以把上面這個式子改寫成乘法式:a=bq1+r1------l)如果r1=0,那麼b就是a、b的最大公約數3。
要是r1≠0,就繼續除,用b除以r1,我們也可以有和上面一樣的式子: b=r1q2+r2-------2)如果餘數r2=0,那麼r1就是所求的最大公約數3。為什麼呢?
因為如果2)式變成了b=r1q2,那麼b1r1的公約數就一定是a1b的公約數。這是因為一個數能同時除盡b和r1,那麼由l)式,就一定能整除a,從而也是a1b的公約數。反過來,如果一個數d,能同時整除a1b,那麼由1)式,也一定能整除r1,從而也有d是b1r1的公約數。
這樣,a和b的公約數與b和r1的公約數完全一樣,那麼這兩對的最大公約數也一定相同。那b1r1的最大公約數,在r1=0時,不就是r1嗎?所以a和b的最大公約數也是r1了。
有人會說,那r2不等於0怎麼辦?那當然是繼續往下做,用r1除以r2,……直到餘數為零為止。在這種方法裡,先做除數的,後一步就成了被除數,這就是輾轉相除法名字的來歷吧。
c語言求最大公約數和最小公倍數
6樓:非同尋常
if(m%i==0 ||n%i==0) x=i;
這句有問題吧
應該是if(m%i==0 &&n%i==0) x=i;
7樓:匿名使用者
main( )
p=n*m; /*先將n和m的乘積儲存在p中,以便求最小公倍數時用*/
r=n%m;
while(r!=0) /*求n和m的最大公約數*/
printf(" gongyueshu: %d\n",m);
printf(" gongbeishu: %d\n",p/m); /*p是原來兩個整數的乘積*/
}運**況:
input n and m :12,8↙
gongyueshu: 4
gongbeishu:24
8樓:
#include
void func(int p, int q)printf("the min multiple is: %d\n", product/p);
printf("the max divisor is: %d\n", p);
}int main()
9樓:光玉石果青
main()
a=num1;
b=num2;
while(b!=0)
printf("最大答
公約數是:%d\n",a);
prinft("最小公倍數是:%d\n",num1*num2/a);}
10樓:承源張月怡
//m,n大小順序bai
可以du任意,但是要在zhiint範圍dao內,也可以自己回改下定
答義#include
main()
printf("%d,%d\n",m,b/m;);}
c語言如何求最大公約數和最小公倍數
11樓:**ile灬微光丶
#include
int main()
m=a*b;
c=a%b;
while(c!=0)
printf("最大公約數是
:\n%d\n",b);
printf("最小公倍數是:\n%d\n",m/b);
}擴充套件資料演算法思想
利用格式輸入語句將輸入的兩個數分別賦給 a 和 b,然後判斷 a 和 b 的關係,如果 a 小於 b,則利用中間變數 t 將其互換。
再利用輾轉相除法求出最大公約數,進而求出最小公倍數。最後用格式輸出語句將其輸出。
#include是在程式編譯之前要處理的內容,稱為編譯預處理命令。編譯預處理命令還有很多,它們都以「#」開頭,並且不用分號結尾,所以是c語言的程式語句。
12樓:用著追她
1、首先開啟codeblocks,建立一個新專案。專案語言,選擇「c」, 我們將專案名稱命名為「回maxandmin」。
2、創答建好專案後,我們開啟 「main.c」檔案。
3、完成輸入功能其中m和n是輸入的兩個數,num是將來儲存的最大公約數。num的值是由後面我們定義的函式,來賦值的。
4、要強制使用者輸入正確的數for(;;)表示一個死迴圈 同樣使用while(true)也可達到死迴圈效果。
5、接下來,當使用者輸入合法之後。我們就要寫else的情況了。
6、當得到的餘數r不是0,就表示 m和n之間不是倍數關係。那麼我們將m的值改為n,n中從存取r 再次執行r=m%n 。意思就是,反覆的用餘數取模餘數,直到0位置。
就是n中存的就為最大公因數了。
7、接下來執行,我們輸入 6,3 其中3就是最大公因數,6是最小公倍數。
13樓:
最大公約數用dueuclid求就可以,有性zhi質 ***(a,b) = ***(b,a mod b)int ***(int a,int b)
while(b!=0)/*輾除法答
,直到b為0為止*/
return a;
}最小公倍數就是 a*b/***(a,b)
14樓:blue丶小
dev-cpp 5.4 純c語言環境du,通過編譯:
#include
int max(int a,int b)
int min(int a,int b)
int main()
C語言中求最大公約數v,誰幫忙解釋下下面這段話的原理
輾轉相除法求兩個數的最大公約數的步驟如下 先用小的一個數除大的一個數,得第一個餘數 再用第一個餘數除小的一個數,得第二個餘數 又用第二個餘數除第一個餘數,得第三個餘數 這樣逐次用後一個數去除前一個餘數,直到餘數是0為止。那麼,最後一個除數就是所求的最大公約數 如果最後的除數是1,那麼原來的兩個數是互...
C語言用輾轉相除法求兩個正整數的最大公約數
include void main printf d m include int int n,int m t n m while t return m end int r,t r n m while r 0 return m c語言程式 用 輾轉相除法 求兩個正整數的最大公約數 程式填空 defin...
c語言中反三角函式的呼叫,C語言中反三角函式的呼叫
反3角函式有 acos double asin double atan double atan double,double 返回值 double 型,弧度值。轉角度要 180.0 3.1416。例如 1 include 2 include 3 include 4 int main 5 1 反三角函式...