mathematica 发表于 2011-2-13 12:55:30

如何用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 22:48:21

标题

本帖最后由 wsc810 于 2011-2-13 23:05 编辑

一道很有意思的问题,能否有人给出求互质因子个数的一个公式或方法。

wayne 发表于 2011-2-14 08:23:23

1# mathematica
:L

qianyb 发表于 2011-2-14 08:39:27

这是整数分解啊

qianyb 发表于 2011-2-14 08:40:11

2# wsc810


这个公式找到了,素数的判别也就解决了

wayne 发表于 2011-2-14 08:56:46

1# mathematica
如果你是想看mathematica代码,请直说,我会尽力给出的。
但请不要拿一个题来一棍子打倒此地的所有人,更何况本题是何其的简单!

hujunhua 发表于 2011-2-14 09:23:45

呵呵,连我都会。公式也不难。

mathematica 发表于 2011-2-14 10:32:32

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
这就是所需要的结果

wayne 发表于 2011-2-14 10:33:16

a = 60; Select, GCD[#, a/#] == 1 &]

wayne 发表于 2011-2-14 10:35:00

再来一个有点obfuscating的代码:a = 60; Table]}]
页: [1] 2 3
查看完整版本: 如何用mathematica实现下面的功能?