主题:求证:8的1000次方减1能被7整除
孙文金888
[专家分:0] 发布于 2011-11-18 19:14:00
各位大哥大姐:
小弟在此求教个问题,希望有才的帮忙出个主意,题目:求证8的1000次方减1后可以被7整除。数学证明方法一楼已经给出,现在的问题变为能不能用fortran编程显示8的1000方计算后的每一位数字,请大家不要再考虑原问题了,谢谢。
最后更新于:2011-11-22 15:40:00
回复列表 (共28个回复)
11 楼
孙文金888 [专家分:0] 发布于 2011-11-22 12:43:00
看这位大侠分数这么高不妨给你说个别人的思路,您在想想应该可以做出来,小弟值知道思路但技术还是有问题,思路是这样的,把0---9这10个数字变成字符来做,这样就不受15个有效数字的限制,应该可以得到精确解,这样就可以用数字来说明这个问题了。感谢您的关注,谢谢,期待您的程序。
12 楼
yeg001 [专家分:14390] 发布于 2011-11-22 13:21:00
算法背后就是数学, 数学里面的"同余"已经挺好地解决这方面的问题.(可以翻翻初高中的数学竞赛书,大学的可能要问数学专业的人.) 你讨论的是整数问题,还不应该放到浮点数里面去讨论,截断误差就把你的余数给切了. 而整数里面别说8的1000次方, 8的100次方都不能够直接算. 最终还是要借助数学解决.
前面几位都给出了很好的解释.如果要求代码,我觉得楼主还是弄清楚要解决什么样的具体问题和相关数学背景再写吧.
13 楼
孙文金888 [专家分:0] 发布于 2011-11-22 15:39:00
[quote]算法背后就是数学, 数学里面的"同余"已经挺好地解决这方面的问题.(可以翻翻初高中的数学竞赛书,大学的可能要问数学专业的人.) 你讨论的是整数问题,还不应该放到浮点数里面去讨论,截断误差就把你的余数给切了. 而整数里面别说8的1000次方, 8的100次方都不能够直接算. 最终还是要借助数学解决.
前面几位都给出了很好的解释.如果要求代码,我觉得楼主还是弄清楚要解决什么样的具体问题和相关数学背景再写吧.[/quote]
这位大哥批评的也有道理,其实我的问题很简单,本来是想简单的证明8的1000次方减1可以被7整除就好,当然这个问题一楼已经解决了,但是我通过这个问题想到了另外的问题就是能不能用fortran编程显示8的1000方计算结果的每一位数字,这才是现在要解决的问题。也是需要编程的问题。感谢大哥批评,但我想是我没讲清楚,您误解了。
14 楼
yeg001 [专家分:14390] 发布于 2011-11-22 16:09:00
你估算过8的1000方是一个多大多么长的数?
确实,某些大数运算的库是有的,我不确定能不能算这么过份的数. 详细可以请教7楼dongyuanxun兄.
但这些数本身用 8^1000 就是好好的,硬要写成一个表达的数值,是否有这个需求?
15 楼
孙文金888 [专家分:0] 发布于 2011-11-22 16:39:00
[quote]你估算过8的1000方是一个多大多么长的数?
确实,某些大数运算的库是有的,我不确定能不能算这么过份的数. 详细可以请教7楼dongyuanxun兄.
但这些数本身用 8^1000 就是好好的,硬要写成一个表达的数值,是否有这个需求?[/quote]
兴趣和爱好而已,其实我最初的问题一楼已经解决,现在纯粹是好奇想搞,实际价值貌似我也没想到,但是这个问题有人用VB编过一个程序可以计算任何数字的任何次方,当时他给出的算例就是2的3000次方,也就是8的1000次方,因此我知道这个数字具体是多大,多长。
16 楼
vanshareen [专家分:0] 发布于 2011-11-22 20:31:00
从数学角度给出算法很简单的,高一数学就能搞定的啊。不就是(a+b)的n次方的展开式吗?8^3000=(1+7)^3000,再展开就ok了。再用计算机实现就可以了
17 楼
dongyuanxun [专家分:7180] 发布于 2011-11-22 23:27:00
[quote]你估算过8的1000方是一个多大多么长的数?
确实,某些大数运算的库是有的,我不确定能不能算这么过份的数. 详细可以请教7楼dongyuanxun兄.
但这些数本身用 8^1000 就是好好的,硬要写成一个表达的数值,是否有这个需求?[/quote]
显然可以算
参考libgmp吧
18 楼
dongyuanxun [专家分:7180] 发布于 2011-11-22 23:28:00
[quote]从数学角度给出算法很简单的,高一数学就能搞定的啊。不就是(a+b)的n次方的展开式吗?8^3000=(1+7)^3000,再展开就ok了。再用计算机实现就可以了[/quote]
展开不还是大数……
19 楼
孙文金888 [专家分:0] 发布于 2011-11-23 09:42:00
[quote]从数学角度给出算法很简单的,高一数学就能搞定的啊。不就是(a+b)的n次方的展开式吗?8^3000=(1+7)^3000,再展开就ok了。再用计算机实现就可以了[/quote]
这是一楼的解法,俺已经会了,谢谢啊
20 楼
孙文金888 [专家分:0] 发布于 2011-11-23 09:43:00
[quote][quote]你估算过8的1000方是一个多大多么长的数?
确实,某些大数运算的库是有的,我不确定能不能算这么过份的数. 详细可以请教7楼dongyuanxun兄.
但这些数本身用 8^1000 就是好好的,硬要写成一个表达的数值,是否有这个需求?[/quote]
显然可以算
参考libgmp吧[/quote]
谢谢,我在学习下看看
我来回复