罗兰在MATLAB的艺术

把想法变成MATLAB

很多完美的是什么时候?

答:当一个正整数的因子的总和,除了本身数量等于数量。这是一个与更多的信息参考从维基百科。

内容

找到所有的因数

你可能会认为所有我们需要做的是找到所有的主要因素,然后我们可以测试这些与数字本身的总和。MATLAB文件寻找主要因素收益率的函数因素

帮助因素
因素主要因素。因素(N)返回一个向量,其中包含的主要因素N这个函数使用简单的筛的方法。它可能需要大内存分配如果数量太大了。技术可以提高该算法,大多数情况下分配更少的内存,导致更快的执行时间。然而,它仍然会有问题在最坏的情况下,我们选择一个上界强加于输入数量和错误为n > 2 ^ 32。类支持输入N金宝app:浮动:双,单也看到质数,ISPRIME。重载的方法:对称/因素参考页面在浏览器帮助医生的因素

看看数字6是一个完全数(有因数1、2和3)。

n = 6;流式细胞仪=因素(n);perfectOrNot =(流式细胞仪)= = n
perfectOrNot = 0

真的吗?但6一个完美的号码!什么错了吗?首先让我们看看流式细胞仪

流式细胞仪
流式细胞仪3 = 2

1号不是一个主要因素,但是是一个除数,需要包括在计算中。我们可以将它添加到因数或减去它n

因数=[1因素(n)] perfectOrNot =(因子)= = n
因数= 1 2 3 perfectOrNot = 1

尝试更多的数量

现在我们让一个函数来做比较。

perfectOrNot = @ (n)和([1因素(n)]) = = n;

看看其他一些数字。17岁的第一个我最喜欢的。

n = 17;perfectOrNot (n)
ans = 0

接下来,另一个已知的完全数,28。

n = 28;perfectOrNot (n)
ans = 0

现在有什么问题吗?

让我们再次跟踪的步骤。

因数=[1因素(n)] sum28 =总和(因子)
因数= 1 2 2 7 sum28 = 12

实际上,这些不都是28的因数。+ 2号是重复的。我们需要添加所有的组合产品的主要因素,删除处理的产品,其中省略所有的产下载188bet金宝搏品数量(本身)。28日,这意味着包括2 * 2和2 * 7。

moreDivs = (2 * 2 2 * 7)
moreDivs = 4 14

把主要因素与组合,介绍,和删除处理。

perfect28 =总和(独特([因数moreDivs])) = = n;

算法获得所有的因数

我们接下来需要一个算法来计算所有独特的因数n。如果你不想让自己的算法,你可以检查文件交换条目列表因数,而多项式。你会发现至少有一个候选函数。

或者你可以转向符号数学工具箱其中包括一些数论的库函数——一个可能的地方为我们寻找一些帮助。MuPAD一侧的工具箱中,我们可以利用MuPAD函数numlib:因子()。因为目前没有这个函数的MATLAB版本可用,我使用一个函数从MuPAD引擎。为此,我供应库的函数名称,并输入。

symDivs =双(函数宏指令(symengine“numlib:因子”n))
symDivs = 1 2 4 7 14 28

因数函数返回n我们需要忽略它总和计算。

sum (symDivs (1: end-1)) = = n
ans = 1

所以,28完美的。

引用和链接

这里有一些从MATLAB新闻组和指针链接到一些相关的贡献在文件交换。

你有一些有趣的和数论在MATLAB ?

我想听你的调查使用MATLAB数论。告诉我关于他们的在这里




发表与MATLAB®R2012b

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。