| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1064 人关注过本帖
标题:把 1/a 拆分成四个不同单位分数的和,并且四个分母之和为最小的VB程序
只看楼主 加入收藏
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:884
专家分:77
注 册:2020-2-10
结帖率:100%
收藏
 问题点数:0 回复次数:13 
把 1/a 拆分成四个不同单位分数的和,并且四个分母之和为最小的VB程序
Private Sub Command1_Click()
'把 1/a 拆分成四个不同单位分数的和,并且四个分母之和为最小的程序代码
Dim n, a As Double
n = Val(Text1)
m = Val(24 * n)
a = Val(1 + n)
Do While a >= Val(n) And a <= 5 * n
b = Val(a + 1)


Do While b <= Val(5 * n)
c = Val(b + 1)

Do While c <= Val(10 * n)

u = Val(a * b * c * n)
v = Val(a * b * c - n * (a * b + (a + b) * c))
If Val(v) > 0 Then
d = Val(u / v)

If c < d And Val(u - Int(u / v) * Abs(v)) = 0 Then
k = Val(a + b + c + d)
If k <= m Then
m = k
s = "{" & a & "," & b & "," & c & "," & d & "}"
s2 = n & "  " & m & "  " & s & vbCrLf
s3 = s3 + 1
End If
End If
End If

c = Val(c + 1)
Loop
b = Val(b + 1)
Loop


a = Val(a + 1)
Loop
If s3 > 0 Then
Text2 = s2 & "需要比较的解的个数为: " & s3 & "组"
Else
Text2 = "无解"
End If


End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
End Sub
搜索更多相关主题的帖子: End Then 拆分 If Sub 
2026-01-17 21:04
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:884
专家分:77
注 册:2020-2-10
收藏
得分:0 
例如:如何把 1/7 拆分成四个不同单位分数的和,并且四个分母之和为最小?
输入:7
输出:
7  120  {21,24,35,40}
需要比较的解的个数为: 11组

这个程序结果表示:1/7=1/21+1/24+1/35+1/40.
而且21+24+35+40=120. 并且该最小值是大约从至少11组解中选出来的。

   其他值仍然可以得到结果,例如:
1  24  {2,4,6,12}
需要比较的解的个数为: 1组

2  41  {4,10,12,15}
需要比较的解的个数为: 3组

3  52  {9,10,15,18}
需要比较的解的个数为: 8组

4  74  {10,15,21,28}
需要比较的解的个数为: 7组

5  84  {15,20,21,28}
需要比较的解的个数为: 10组

6  99  {20,21,28,30}
需要比较的解的个数为: 14组

………………

99  1593  {352,396,416,429}
需要比较的解的个数为: 69组

100  1611  {350,406,420,435}
需要比较的解的个数为: 66组
2026-01-17 21:24
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:884
专家分:77
注 册:2020-2-10
收藏
得分:0 
Private Sub Command1_Click()
'把 1/a 拆分成四个不同单位分数的和,并且四个分母之和为小于某数的所有解
Dim n, a As Double
n = Val(Text1)
m = Val(Text2)
a = Val(1 + n)

Do While a <= Val(4 * n) And a >= Val(1 + n)
b = Val(a + 1)


Do While b <= Val(5 * n)
c = Val(b + 1)

Do While c <= Val(9 * n)

u = Val(a * b * c * n)
v = Val(a * b * c - n * (a * b + (a + b) * c))
If Val(v) > 0 Then
d = Val(u / v)

If c < d And u Mod Abs(v) = 0 Then
k = Val(a + b + c + d)
If k <= m Then
s = "{" & a & "," & b & "," & c & "," & d & "}"
s2 = s2 & n & "  " & k & "  " & s & vbCrLf
s3 = s3 + 1
End If
End If
End If

c = Val(c + 1)
Loop
b = Val(b + 1)
Loop


a = Val(a + 1)
Loop
If s3 > 0 Then
Text3 = s2 & "解的个数为: " & s3 & "组"
Else
Text3 = "无解"
End If


End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub


[此贴子已经被作者于2026-1-19 11:49编辑过]

2026-01-18 19:19
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:884
专家分:77
注 册:2020-2-10
收藏
得分:0 
举例:
输入:7和120
输出:
7  120  {20,28,30,42}
7  120  {21,24,35,40}
解的个数为: 2组

输入:7和119
输出:
无解
2026-01-18 19:24
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:884
专家分:77
注 册:2020-2-10
收藏
得分:0 
举例:
输入:6和300
输出:
6  284  {12,17,51,204}
6  272  {12,18,44,198}
6  255  {12,18,45,180}
6  222  {12,18,48,144}
6  199  {12,18,52,117}
6  192  {12,18,54,108}
6  297  {12,19,38,228}
6  277  {12,20,35,210}
6  248  {12,20,36,180}
6  201  {12,20,39,130}
6  192  {12,20,40,120}
6  179  {12,20,42,105}
6  167  {12,20,45,90}
6  160  {12,20,48,80}
6  157  {12,20,50,75}
6  289  {12,21,32,224}
6  208  {12,21,35,140}
6  195  {12,21,36,126}
6  159  {12,21,42,84}
6  154  {12,21,44,77}
6  284  {12,22,30,220}
6  199  {12,22,33,132}
6  169  {12,22,36,99}
6  144  {12,22,44,66}
6  279  {12,24,27,216}
6  232  {12,24,28,168}
6  186  {12,24,30,120}
6  164  {12,24,32,96}
6  157  {12,24,33,88}
6  144  {12,24,36,72}
6  136  {12,24,40,60}
6  134  {12,24,42,56}
6  167  {12,25,30,100}
6  129  {12,26,39,52}
6  129  {12,27,36,54}
6  140  {12,28,30,70}
6  123  {12,30,36,45}
6  233  {13,16,48,156}
6  223  {13,18,36,156}
6  187  {13,18,39,117}
6  219  {13,20,30,156}
6  218  {13,21,28,156}
6  167  {13,24,26,104}
6  281  {14,15,42,210}
6  184  {14,16,42,112}
6  162  {14,16,48,84}
6  157  {14,18,35,90}
6  152  {14,18,36,84}
6  137  {14,18,42,63}
6  167  {14,20,28,105}
6  148  {14,20,30,84}
6  129  {14,20,35,60}
6  227  {14,21,24,168}
6  147  {14,21,28,84}
6  135  {14,21,30,70}
6  122  {14,24,28,56}
6  113  {14,24,35,40}
6  223  {15,16,32,160}
6  178  {15,16,35,112}
6  151  {15,16,40,80}
6  139  {15,16,48,60}
6  151  {15,17,34,85}
6  283  {15,18,25,225}
6  195  {15,18,27,135}
6  153  {15,18,30,90}
6  131  {15,18,35,63}
6  129  {15,18,36,60}
6  277  {15,20,22,220}
6  179  {15,20,24,120}
6  160  {15,20,25,100}
6  133  {15,20,28,70}
6  125  {15,20,30,60}
6  116  {15,20,36,45}
6  124  {15,21,28,60}
6  113  {15,21,35,42}
6  109  {15,24,30,40}
6  202  {16,18,24,144}
6  118  {16,18,36,48}
6  140  {16,20,24,80}
6  114  {16,20,30,48}
6  113  {16,21,28,48}
6  104  {18,20,30,36}
6  103  {18,21,28,36}
6  99  {20,21,28,30}
解的个数为: 84组

输入:6和99
输出:
6  99  {20,21,28,30}
解的个数为: 1组

输入:6和98
输出:
无解
2026-01-18 20:38
冬瓜汤
Rank: 2
等 级:论坛游民
威 望:1
帖 子:20
专家分:75
注 册:2023-1-30
收藏
得分:0 
小学生的问题
1=1-1/2+1/2-1/3+1/3-1/4+1/4
  =1/2+1/6+1/12+1/4
就自然数而言,你能举出比这更小的分母和吗?
1/a=1/a(1/2+1/6+1/12+1/4)
2026-01-19 03:15
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:884
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 6楼 冬瓜汤
当a=7时,按您的公式分母之和是2*7+4*7+6*7+12*7=168,这个大于其最小值120的
前面有这个最小值

[此贴子已经被作者于2026-1-19 21:16编辑过]

2026-01-19 11:11
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:884
专家分:77
注 册:2020-2-10
收藏
得分:0 
举例:
输入:6和99
输出:
6  99  {20,21,28,30}
解的个数为: 1组

输入:6和98
输出:
无解

所以,99是最小值,而按您的公式:2*6+4*6+6*6+12*6=12+24+36+72=144
2026-01-19 11:15
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:884
专家分:77
注 册:2020-2-10
收藏
得分:0 
输入:
输出:
1  24  {2,4,6,12}
需要比较的解的个数为: 1组
1/1拆分是:1=1/2+1/4+1/6+1/12
而2+4+6+12=24
综上所述,24n不是最小值,当n>1时,反而是最小值都在24n内的。

输入:2
输出:
2  41  {4,10,12,15}
需要比较的解的个数为: 3组
2026-01-19 11:32
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:884
专家分:77
注 册:2020-2-10
收藏
得分:0 
举例:
输入:2和48
输出:
2  48  {4,8,12,24}
2  43  {4,9,12,18}
2  41  {4,10,12,15}
2  43  {5,6,12,20}
解的个数为: 4组

比2*24=48还小的有3个,而比48大可能有无穷多

输入:2和500
输出:
2  269  {3,10,16,240}
2  121  {3,10,18,90}
2  179  {4,6,13,156}
2  108  {4,6,14,84}
2  85  {4,6,15,60}
2  74  {4,6,16,48}
2  64  {4,6,18,36}
2  161  {4,7,10,140}
2  65  {4,7,12,42}
2  53  {4,7,14,28}
2  93  {4,8,9,72}
2  62  {4,8,10,40}
2  48  {4,8,12,24}
2  43  {4,9,12,18}
2  41  {4,10,12,15}
2  139  {5,6,8,120}
2  65  {5,6,9,45}
2  51  {5,6,10,30}
2  43  {5,6,12,20}
解的个数为: 19
2026-01-19 11:39
快速回复:把 1/a 拆分成四个不同单位分数的和,并且四个分母之和为最小的VB程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026408 second(s), 8 queries.
Copyright©2004-2026, BCCN.NET, All Rights Reserved