在自然数分拆中应用分组数

程国华

(湖北孝感工业学校 432111

摘要 自然数分拆是一个古老且饶有趣味的数学问题,古今中外屡有论述;用分组数M(k,r)来研究它非常便利,它也是分组问题一个重要的实用事例。

关键词 自然数分拆 分组数M(k,r) VB程序

 

所谓自然数(正整数)分拆,就是将一个正整数表达成若干个正整数之和,如x1+x2+…+xr=k是k的一个r-分拆。自然数分拆后,各部分之间考虑顺序的叫有序分拆,否则叫无序分拆。不论有序分拆还是无序分拆,允许分部量相同的正整数分拆称为可重复的分拆7=2+2+3。而要求分部量两两相异的分拆称为不允许重复的分拆,如:10=1+2+3+4。这里着重讨论是自然数的无序分拆,未加声明的是可(允许)重复的分拆。

三、VB软件的使用及计算

Visual Basic是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序,98年底已出到6.0版。我们可以将按钮(Command)、进度条(ProgressBar)等控件(Control)象堆积木那样,拖到窗体(Form)上;再把其标题(Caption)改成《开始》、《退出》等,规定一些属性,形成适合自己的界面。第二步是为这些控件所发生的事件,逐项编写相应的代码,半智能化的编码器会及时提供可能的属性与方法,还可以运用剪切板、复制、粘贴等手法,这一切使程序编码来得相当简单、轻松快速!

本软件代码共分12个部分(从略),运行后,单击《开始》按钮,在输入对话框(InputBox)内填入你所要的自然数和拆分个数,须臾之间,就把分拆结果显示在窗体上,如:

①把自然数 57 拆分成 8 个自然数之和,共有 27493 种相异分法。

当要求把自然数 57 拆分成 8 个互不相等的自然数之和,称为不重复的分拆;其分拆数N( 57 , 8 )= 525。

②把自然数 842 拆分成 39 个自然数之和,共有 3.18158840694962E+25 种相异分法。当要求把自然数 842 拆分成 39 个互不相等的自然数之和,称为不重复的分拆;其分拆数N( 842 , 39 )= 1295648。

右击屏幕弹出菜单,再单击选择项,立刻显示出特殊分拆的结果,如:

③把自然数 136 拆分成 17 个自然数之和,当要求分拆中每一数都不小于7时,分拆数为 297;当要求分拆中至少有一个数小于7时,分拆数为 374135624。

④把自然数 1000 拆分成 36 个自然数之和,当要求分拆中每一数都大于或等于23时,分拆数为 246121468229;当要求分拆中至少有一个数小于23时,分拆数为 1.43151860238437E+27。

单击《记录》按钮,则将这些结果存入D盘某个文件内,供你以后细心观赏和研究。图-3就是它记录下来的N(k,r)值表的一部分。

⑤又如:查得N(19,5)=5,即将19拆分成 5个互不相等的自然数之和,只有5种相异分法;它们是:(1,2,3,4,9)、(1,2,3,5,8)、(1,2,3,6,7)、(1,2,4,5,7)、(1,3,4,5,6)。它告诉我们分拆个数仅指明了方向,但要找全还是很麻烦的!

在运行的关键时和差错处,立即跳出信息对话框(MsgBox),予以询问或警告,帮助你的正确使用。自然数分拆数动辄是十位数以上,要用人力计算是艰难、不可想象的!我们要感谢电脑的神奇与科技的发展,才给一个宽敞轻松的研究余地。拘于篇幅,我将计时器等辅助代码略去,不能再多地说明,特致歉意。从数学问题扯到VB编程,总望各方面同仁爱好者欣赏呼应,共享知识的乐趣。

参考书目:

  1. 卢开澄 著《组合数学椝惴ㄓ敕治觥非寤笱О?1983.9

  2. 高等函授学报《球盒模型的最终解决》 华中师范大学 1998年第四期

  3. 曹陵 臧正松 合著《分组问题的丰富内涵》 98.8

  4. 刘炳文 著 《Visual Basic 4.0 for Windows 95 程序设计基础》

人民邮电出版社 1998.1

2001年7月15日再次修订

返回