Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3124|回复: 4

[已解决]VB用函数实现两数最大公约数

[复制链接]
发表于 2016-3-2 10:01 | 显示全部楼层 |阅读模式
VB用函数实现两数最大公约数
最佳答案
2016-3-2 16:05
也可以迭代循环计算:

'最大公約数 G.C.D=Greatest Common Divisor
  1. Function GCD2&(t1&, t2&)
  2.     Do
  3.         If t1 < t2 Then t = t1: t1 = t2: t2 = t
  4.         t1 = t1 Mod t2
  5.     Loop While t1
  6.     GCD2 = t2
  7. End Function
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-3-2 16:00 | 显示全部楼层
史上最简VBA自定义公式:

最大公約数 G.C.D=Greatest Common Divisor
  1. Function GCD&(t1&, t2&)
  2.     If t1 Mod t2 Then GCD = GCD(t2, t1 Mod t2) Else GCD = t2
  3. End Function
复制代码
是自身递归计算。

评分

参与人数 1 +6 收起 理由
vbyou127 + 6 今天你好运,加你6分

查看全部评分

回复

使用道具 举报

发表于 2016-3-2 16:05 | 显示全部楼层    本楼为最佳答案   
也可以迭代循环计算:

'最大公約数 G.C.D=Greatest Common Divisor
  1. Function GCD2&(t1&, t2&)
  2.     Do
  3.         If t1 < t2 Then t = t1: t1 = t2: t2 = t
  4.         t1 = t1 Mod t2
  5.     Loop While t1
  6.     GCD2 = t2
  7. End Function
复制代码

评分

参与人数 1 +6 收起 理由
vbyou127 + 6 分数还有好多

查看全部评分

回复

使用道具 举报

发表于 2016-3-2 16:09 | 显示全部楼层
这个算法很有名,叫做辗转相除法 或 短除法。

评分

参与人数 1 +6 收起 理由
vbyou127 + 6 慢慢加你,香菜,香勤,

查看全部评分

回复

使用道具 举报

发表于 2016-3-2 16:35 | 显示全部楼层
迭代计算过程可以改进一下,效率更高:

'最大公約数 G.C.D=Greatest Common Divisor
  1. Function GCD1&(t1&, t2&)
  2.     Do
  3.         t = t1 Mod t2: t1 = t2: t2 = t
  4.     Loop While t
  5.     GCD1 = t1
  6. End Function
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 17:56 , Processed in 0.275874 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表