日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常见算法:C语言求最小公倍数和最大公约数三种算法

發布時間:2025/3/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常见算法:C语言求最小公倍数和最大公约数三种算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最小公倍數:數論中的一種概念,兩個整數公有的倍數成為他們的公倍數,當中一個最小的公倍數是他們的最小公倍數,相同地,若干個整數公有的倍數中最小的正整數稱為它們的最小公倍數,維基百科:定義點擊打開鏈接

求最小公倍數算法

最小公倍數=兩整數的乘積÷最大公約數

求最大公約數算法

(1)輾轉相除法

有兩整數ab

a%b得余數c

c=0,則b即為兩數的最大公約數

③ 若c≠0,則a=bb=c,再回去運行①

比如求2715的最大公約數過程為:

27÷15 1215÷12312÷30因此,3即為最大公約數

#include<stdio.h> void main() /* 輾轉相除法求最大公約數 */ { int m, n, a, b, t, c;printf("Input two integer numbers:\n");scanf("%d%d", &a, &b);m=a; n=b;while(b!=0) /* 余數不為0,繼續相除,直到余數為0 */ { c=a%b; a=b; b=c;}printf("The largest common divisor:%d\n", a);printf("The least common multiple:%d\n", m*n/a); }

⑵ 相減法

有兩整數a和b:

① 若a>b,則a=a-b

② 若a<b,則b=b-a

③ 若a=b,則a(或b)即為兩數的最大公約數

④ 若a≠b,則再回去運行①

比如求27和15的最大公約數過程為:

27-15=12( 15>12 ) 15-12=3( 12>3 )

12-3=9( 9>3 ) 9-3=6( 6>3 )

6-3=3( 3==3 )

因此,3即為最大公約數

#include<stdio.h> void main ( ) /* 相減法求最大公約數 */ { int m, n, a, b, c;printf("Input two integer numbers:\n");scanf ("%d,%d", &a, &b);m=a; n=b; /* a, b不相等,大數減小數,直到相等為止。*/ while ( a!=b) if (a>b) a=a-b; else b=b-a;printf("The largest common divisor:%d\n", a);printf("The least common multiple:%d\n", m*n/a); }

⑶窮舉法

有兩整數a和b:

① i=1

② 若a,b能同一時候被i整除,則t=i

③ i++

④ 若 i <= a(或b),則再回去運行②

⑤ 若 i > a(或b),則t即為最大公約數,結束

改進:

① i= a(或b)

② 若a,b能同一時候被i整除,則i即為最大公約數,

結束

③ i--,再回去運行②

有兩整數a和b:

① i=1

② 若a,b能同一時候被i整除,則t=i

③ i++

④ 若 i <= a(或b),則再回去運行②

⑤ 若 i > a(或b),則t即為最大公約數,結束

改進:

① i= a(或b)

② 若a,b能同一時候被i整除,則i即為最大公約數,

結束

③ i--,再回去運行②

#include<stdio.h> void main () /* 窮舉法求最大公約數 */ { int m, n, a, b, i, t;printf("Input two integer numbers:\n");scanf ("%d,%d", &a, &b);m=a; n=b; for (i=1; i<= a; i++) if ( a%i == 0 && b%i ==0 ) t=i;printf("The largest common divisor:%d\n", t);printf("The least common multiple:%d\n", m*n/t); } /* 改進后的for (t= a; t>0; t-- ) if ( a%t == 0 && b%t ==0 ) break; */
//窮舉法求最小公倍數for (i= a; ; i++ )if ( i % a == 0 && i % b ==0 ) break;printf("The least common multiple:%d\n", i )//多個數的最大公約數和最小公倍數for (i= a; i>0; i-- )if (a%i==0&&b%i==0&&c%i==0) break;printf("The largest common divisor:%d\n", i);for (i= a; ; i++ )if (i%a==0&&i%b==0&&i% c==0) break;printf("The least common multiple:%d\n", i )

總結

以上是生活随笔為你收集整理的常见算法:C语言求最小公倍数和最大公约数三种算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。