| 
注册时间2015-10-15最后登录1970-1-1威望 星金币 枚贡献 分经验 点鲜花 朵魅力 点上传 次下载 次积分2223在线时间 小时 
 | 
 
| 
本帖最后由 TSC999 于 2016-12-10 10:41 编辑
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?欢迎注册  
 求一个整数(例如 123456789)的各位数字之和,mathematica 可以用下面这指令:
 
 复制代码lst = IntegerDigits[123456789]         
Sum[lst[[k]], {k, 1, Length[lst]}]
问题是:
 我想统计 1,2,3,4,……,2015,2016 这个连续数列中, 各位数字之和等于 1 的有几个?等于 2 的有几个?……,等于 30 的有几个?
 【注: 估计其中 1999 有最大的数字和,等于 1+9+9+9=28。】如何写程序? 看似简单,我写来写去玩不转。
 
 复制代码(* 在 1,2,3,4,\[Ellipsis],2015,2016 中,它们的各位数字和是 1,2,3,\[Ellipsis]\
\[Ellipsis],28。问:每一种和数有多少个?*)
Table[f[i] = 0, {i, 1, 30}];
For[i = 1, i <= 2016, i++,
 lst = IntegerDigits[i];
 s = Sum[lst[[k]], {k, 1, Length[lst]}]]
  For[j = 1, j <= 30, j++,
 If[s == j, f[j] = f[j] + 1];
 ]
For[j = 1, j <= 30, j++,
  Print[j, "---", f[j]]];
上面这个代码运行结果不正确。不知哪里错了?
 | 
 |