當前位置:編程學習大全網 - 編程軟體 - 壹道編程問題

壹道編程問題

r = m mod n 的意思是求余數,比如 5 mod 2 = 1 因為5/2 余數為1,而5 mod 5 = 0即為能除盡,而 3 mod 7 = 3 因為3/7 = 0 余 3

接下來的loop是在用歐幾裏得算法算兩個數的最大公約數。

a和b的最大公約數是a和b都能除盡的最大的數,ie最大的x st a mod x =0 and b mod x = 0。比如8和12的最大公約數是4

看code:

當m>n時,如果 r = m mod n 為0,那麽n就是最大公約數,比如25 mod 5=0最大公約數為5, 16 mod 8=0最大公約數為8

如果r 不是0, 比如r=12 mod 8 = 4,進入loop,那設置新的m=8, n=4, 得到 r = 8 mod 4 = 0, 結束loop。n=4是12和8之間的最大公約數

再看 如果是9和5之間,r = 9 mod 5 = 4, 進入loop,新的m=5, n = 4, 得到r = 5 mod 4 = 1 r仍然不是0,那再loop,設新的m = 4, n = 1, 得到r = 4 mod 1 = 0. 結束loop。得到9和5的最大公約數是n=1。

所以,只有當r=0, 即r不再>0時,loop結束,此時的n,為最大公約數。

最小公倍數 是 壹個數x,它是最小的,能同時除盡a和b 的數。比如(12,8)的最小公倍數 = 24 = 12*8/4, 此處4是12和8的最大公約數。

所以有了最大公約數(gcd),可以計算最小公倍數為:x=a*b/gcd(a,b)

所以最下方是通過求出的最大公約數n, 原本的ml和nl, 算出最小公倍數:ml*nl/n

可以百度壹下最大公約數,最小公倍數,余數的概念哦,屬於代數基礎。

  • 上一篇:Java菜鳥入門怎麽學?
  • 下一篇:三菱plc 中。有多個數據,要找出其中最大值和最小值 用什麽指令
  • copyright 2024編程學習大全網