找回密码
 欢迎注册
楼主: mathematica

[提问] 如何用mathematica实现下面的功能?

[复制链接]
发表于 2011-2-14 11:06:59 | 显示全部楼层

偶是Mathematica初级,只会这样的

本帖最后由 hujunhua 于 2011-2-14 15:43 编辑
  1. n=Input[请输入n]
  2. FactorExponent = Apply[Power, FactorInteger[n], {1}]
  3. Apply[Times, Subsets[FactorExponent], {1}]
复制代码
输入1800时的显示结果
  1. 1800
  2. {8, 9, 25}
  3. {1, 8, 9, 25, 72, 200, 225, 1800}
复制代码
估计Wayne与人合写的那本关于Mathematica的书正适合我这样层次的人看吧。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-14 11:15:02 | 显示全部楼层
  1. Clear["Global`*"];(*清除所有变量*)
  2. n=10!;(*被求的整数*)
  3. fj=FactorInteger[n];(*分解因式*)
  4. p=fj[[All,1]] (*提取第一列素数*)
  5. d=fj[[All,2]] (*提取第二列指数*)
  6. q=p^d (*各个互质的部分*)
  7. q1={q} (*由向量形成只有一行的矩阵*)
  8. q2=Transpose[q1] (*形成列向量矩阵*)
  9. mm=q2.q1  (*做矩阵乘法*)
  10. tra=UpperTriangularize[mm,1]  (*取对角线以上元素,不包含对角线*)
  11. tranew=Flatten[tra] (*使得矩阵形成一个表*)
  12. Select[tranew, #>0&] (*只选取大于零的元素*)
复制代码
这是我按照我的思路写的代码,但是还没完成,当然我也不准备向下写了,
我也不知道如何按照我的思路才能完成,刚看到wayne的代码,
觉得他的思路真是远超过我的思维,
简直就是外星人!

评分

参与人数 1经验 -1 收起 理由
hujunhua -1 这么用Mathematica也貌似外星人吔

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-14 11:30:02 | 显示全部楼层
哎 wayne的对mathematica的掌握程度,远远超过了我,
第二个代码我知道他是按照我的那个思路写的,但是
到现在为止,我还没搞明白那个代码的意思,真是高手呀!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-14 11:31:57 | 显示全部楼层
wayne对mathematica的程度真是到了出神入化的地步,真的不是我辈所能赶上的!!!!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-14 11:53:17 | 显示全部楼层
说实话,我欣赏wayne的第二个代码,第一个代码其实很简单,就是能不能想到的问题,第二个代码真是很牛!
真的很有水平!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-2-14 11:57:32 | 显示全部楼层
Times @@@ Subsets[Power @@@ FactorInteger[60]]

评分

参与人数 1鲜花 +6 收起 理由
wayne + 6 perfect!

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-2-14 12:26:29 | 显示全部楼层
15# mathematica
我也说句实话,第二个代码我基本上是不假思索,不加润色斟酌,一下子写出来的。如果这样写出来的代码都把你给雷住了的话,那hujunhua在16楼的最完美的代码你该怎么评价呢???
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-2-14 12:29:55 | 显示全部楼层
本帖最后由 wayne 于 2011-2-14 12:32 编辑

11# hujunhua
估计Wayne与人合写的那本关于Mathematica的书正适合我这样层次的人看吧。

那本书是他一个人写的,呕心沥血,折腾了无数次的。
除了那个封面,我没有作任何贡献
============
老大内功深厚,悟性奇高,耍起武器来 也仅仅是个时间和经验积累的问题。
我觉得那书不适合于任何人看
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-14 12:44:03 | 显示全部楼层
Times @@@ Subsets[Power @@@ FactorInteger[60]]
hujunhua 发表于 2011-2-14 11:57

@@@是什么意思呢?
我知道@是prefix的意思
@@是apply的意思,
但是@@@=@(@@),还是@@@=(@@)@呢?
还是@@@上面的两个都不等于呢?
如果都不等于,那是什么意思呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-14 12:47:07 | 显示全部楼层
15# mathematica
我也说句实话,第二个代码我基本上是不假思索,不加润色斟酌,一下子写出来的。如果这样写出来的代码都把你给雷住了的话,那hujunhua在16楼的最完美的代码你该怎么评价呢???
wayne 发表于 2011-2-14 12:26


人水平还是有高低的,也许将来我的水平变高了就不会那么看了.
当然你的mathematica的函数掌握得比我多很多,这会有利于编程的
当然,其实还是那些写mathematica软件的人的水平高!
hujunhua在16楼的代码也很好!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-19 13:44 , Processed in 0.060396 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表