找回密码
 欢迎注册
查看: 25590|回复: 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-4-27 07:36 , Processed in 0.051834 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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