如何用mathematica实现下面的功能?
给定一个正整数n,给一个因子d,要求d与n/d互质,要求求出所有的这样的d(d大于零)
比如,给定60=(2^2)*3*5
这样的d为1, 3, 4, 5, 12, 15, 20,60
如何使用mathematica来实现这个功能呢?
我感觉简单,就是不会实现,当然这样的
问题在于wayne看来就是很弱智的问题了,
似乎也只有他才能够解决这个问题
标题
本帖最后由 wsc810 于 2011-2-13 23:05 编辑一道很有意思的问题,能否有人给出求互质因子个数的一个公式或方法。 1# mathematica
:L 这是整数分解啊 2# wsc810
这个公式找到了,素数的判别也就解决了 1# mathematica
如果你是想看mathematica代码,请直说,我会尽力给出的。
但请不要拿一个题来一棍子打倒此地的所有人,更何况本题是何其的简单! 呵呵,连我都会。公式也不难。 7# hujunhua
是的,确实简单,我也会,但是我想要的是简单的代码
拿1458000举例子
第一步分解
FactorInteger
得到{{2, 4}, {3, 6}, {5, 3}}
也就是1458000=(2^4)*(3^6)*(5^3)
第二步计算
1458000=(2^4)*(3^6)*(5^3)
=16*729*125,记集合{16,729,125}=P,P中的个数为N
第三步
从P中取1个元素做乘积,有C(N,1)=N种可能,所得的结果记为Q1
从P中取2个元素做乘积,有C(N,2)种可能,所得的结果记为Q2
从P中取3个元素做乘积,有C(N,3)种可能,所得的结果记为Q3
...........................
从P中取N个元素做乘积,有C(N,N)种可能,所得的结果记为QN
第四步
把所有的Qi取并集,Q1∪Q2∪Q3...∪QN,并集记为Q
第五步
取并集{1}∪Q
这就是所需要的结果 a = 60; Select, GCD[#, a/#] == 1 &] 再来一个有点obfuscating的代码:a = 60; Table]}]