找回密码
 欢迎注册
查看: 46440|回复: 14

[原创] 花几分钟做了两道project euler习题

[复制链接]
发表于 2011-4-9 21:59:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
http://bbs.emath.ac.cn/viewthrea ... romuid=865#pid35816 知道project euler 随便选了两题,做了一下,如下,最后一行是结果 http://projecteuler.net/index.php?section=problems&id=9 Clear["Global`*"];(*Clearallvariables*) Reduce[a^2+b^2==c^2&&a+b+c==1000&&0<=a&&a<=b&&b<=c,Integers] (a==0&&b==500&&c==500)||(a==200&&b==375&&c==425)(*就是这个结果*) http://projecteuler.net/index.php?section=problems&id=16 Clear["Global`*"];(*Clearallvariables*) a=IntegerDigits[2^1000]; Sum[a[[ i]],{i,1,Length[a]}] 1366(*就是这个结果*)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-4-9 22:01:27 | 显示全部楼层
http://projecteuler.net/index.php?section=problems&id=16 Clear["Global`*"];(*Clearallvariables*) a=IntegerDigits[2^1000]; Sum[a[[i ]],{i,1,Length[a]}] 1366(*就是这个结果*)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-4-9 22:02:34 | 显示全部楼层
2# mathematica 前面的几十道都很简单的,是用来热身的,后面的难度都很大
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-4-9 22:03:42 | 显示全部楼层
特别声明!!!! 我的代码是正确的,但是上传到研发论坛就错误了, 这不是我的原因.
gxqcn按编辑,点“更多设定”,然后勾选“禁用 Discuz!代码”即可。 因为“[i]”在论坛里是“斜体”的标签符(也可象这里的“[ i ]”那样在“i”的两侧加空格以消除误解析成论坛标签)。 前两贴我已代编辑好了。
如图片所示代码 euler.jpg

评分

参与人数 1经验 +3 收起 理由
gxqcn + 3 按编辑,点更多设定,然后勾选“禁用 Discu ...

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-4-9 22:07:14 | 显示全部楼层
Sum[a[[i]],{i,1,Length[a]}] 为什么不写成 Total[a] 呢
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-4-9 22:08:42 | 显示全部楼层
又做了一道! http://projecteuler.net/index.php?section=problems&id=48 Clear["Global`*"];(*Clearallvariables*) a=Table[PowerMod[i,i,10^10],{i,1,1000}]; Mod[Sum[a[[ i]],{i,1,Length[a]}],10^10] 9110846700(*就是这个结果*)
euler02.jpg
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-4-9 22:58:11 | 显示全部楼层
pe9
  1. Module[{a = 0, b = 0, c = 0},
  2. While[a + b + c != 1000,
  3. a = RandomInteger[{100, 400}];
  4. b = RandomInteger[{100, 400}];
  5. c = Sqrt[a^2 + b^2];
  6. ];
  7. Print[{a, b, c, a*b*c}];
  8. ] // Timing
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-4-9 23:50:51 | 显示全部楼层
7# chyanog 此题是笔算题: a+b+c = (m^2-n^2) +(2mn) +(m^2+n^2) =1000 即 m(m+n) =500 m>n 放缩一下,得到 $5\sqrt(10) < m <10\sqrt(5)$,又因为 m 是500 的因子. 所以 m只能是20 ,于是 n= 25-20 =5 所以 abc=2mn(m^4-n^4) = 200*(160000-625) = 31875000
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-4-10 08:14:47 | 显示全部楼层
pe9 Module[{a = 0, b = 0, c = 0}, While[a + b + c != 1000, a = RandomInteger[{100, 400}]; b = RandomInteger[{100, 400}]; c = Sqrt[a^2 + b^2]; ]; Print[{a, b, c, a*b*c}]; ] ... chyanog 发表于 2011-4-9 22:58
真大胆呀,居然用随机数做算法,不过如果a+b+c的和比较大的话,差不多就会失败吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-4-10 08:21:56 | 显示全部楼层
Sum[a[],{i,1,Length[a]}] 为什么不写成 Total[a] 呢 wayne 发表于 2011-4-9 22:07
很简单呀,我不知道Total这个函数呀! 我深受matlab的影响,matlab中的sum可以对向量求和的, 但是不知道mathematica中对向量求和的居然是Total
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-12-4 17:00 , Processed in 0.031249 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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