- 注册时间
- 2015-10-15
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 2221
- 在线时间
- 小时
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?欢迎注册
×
本帖最后由 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]]];
复制代码
上面这个代码运行结果不正确。不知哪里错了? |
|