社区
数据结构与算法
帖子详情
虚心请教一个数学问题
jp1984
2005-05-14 06:48:45
1)求666^666的最后十位数
2)求666!^666!的最后十位数
我想解决了1)则可以解决2) .对于666!可对其展开成 素数的幂乘形式.
这个问题我零星的想了有一个礼拜.得到了各种各样的思路,但是都没有办法进行下去.
最有希望开展下去的思路是. 如何找到 x(mod a),和 x(mod a^n) n>=1 之间的关系.
本题编程可能比较容易实现 .对大指数的幂,可把幂化为2进制来解决。
请教各位同志,怎么解决这个问题呢?
...全文
247
22
打赏
收藏
虚心请教一个数学问题
1)求666^666的最后十位数 2)求666!^666!的最后十位数 我想解决了1)则可以解决2) .对于666!可对其展开成 素数的幂乘形式. 这个问题我零星的想了有一个礼拜.得到了各种各样的思路,但是都没有办法进行下去. 最有希望开展下去的思路是. 如何找到 x(mod a),和 x(mod a^n) n>=1 之间的关系. 本题编程可能比较容易实现 .对大指数的幂,可把幂化为2进制来解决。 请教各位同志,怎么解决这个问题呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jp1984
2005-05-17
打赏
举报
回复
50!最后十位为零为什么666!^666!就是零?
好笨!请指教!
GetTheWorld
2005-05-17
打赏
举报
回复
hoho jp1984笨笨了
blue_sky007
2005-05-17
打赏
举报
回复
所以遇到0结尾的自然就保留下来.因此,对于666!^666!的末尾的0有很多很多!
blue_sky007
2005-05-17
打赏
举报
回复
to:jp1984,末尾是0的数字乘以其他任何数字末尾的0都不会丢失的.
mathe
2005-05-16
打赏
举报
回复
666!^666!最后10位显然都是0
666^666做模10计算就可以了
aheadyes
2005-05-16
打赏
举报
回复
看来这些数字真的是楼主凭空出来的:)
大家都把焦点放在第一题,而乎略了第2题。
还是mathe心细!
50! 最后10位 肯定是0了,
何况666!^666!
jp1984
2005-05-16
打赏
举报
回复
为什么666!^666!最后十位都是0啊?
hanweizhouricher
2005-05-16
打赏
举报
回复
顶一下
jp1984
2005-05-15
打赏
举报
回复
to dext,
查了一下,java中long型确实支持超过十三位的数,挺好的。但是其实你做的还是错了。自己去发现错误吧.
to mysword,
为什么要不断的模10^10?求的只最后的十位数啊.
其实本题的初忠只是纯粹的数学推导,没想到各位都是借助计算机来解决。期待后来者.
gnefuil
2005-05-15
打赏
举报
回复
c不支持13位以上?搞笑啊
现在主流c编译器都是支持long long的吧,64位二进制,也就是20位10进制
我觉得要先搞清楚,要问的问题是对某个特殊数值比如666,还是对一般性问题求解,比如就是求n^n的后多少多少位
其次,你希望的解答是数学解答还是计算机解答?两者的思考方式是不一样的
GetTheWorld
2005-05-15
打赏
举报
回复
大家讨论不要有火药味嘛
aheadyes
2005-05-15
打赏
举报
回复
呵呵,我的数学菜得不行,继续关注。。。
算法版,有很多数学牛人,学习!
jp1984
2005-05-15
打赏
举报
回复
to aheadyes
是mysword的话有歧义,他的意思可以理解成对666^666的最后结果不断取模10^10.后面的我又没看 :p
呵呵.当是如果按照这种方法,对不支持13位以上的数的类型的语言.比如C,则还是要用到高精度.这里是算法版,不需要太注重实现的问题.我只是想弄清楚其中的数学的规律而已.
我想你是没有认真分析而已 6有很多优良的性质 6 = 1+2+3. 而且对大整数的幂运算来说,里面也有很多可用的定理.如Fermat定理和Euler定理.而对2)问则除了利用n!的标准素数展开外,可能还会用到wilson定理.老实说,本身这题就是个数学题,是出自一本数学趣题的.
我想你还是认真的做做再发言比较稳重.
gnefuil
2005-05-15
打赏
举报
回复
不断的模10^10
a^n mod m = ((((a mod m)*a mod m)*a mod m)...mod m)
dext
2005-05-15
打赏
举报
回复
第一个问题的代码
public class GetMod {
public static void main(String[] args) {
long s = 1;
for (int i = 0; i < 666; i++) {
s *= 666;
s %= 10000000000L;
}
System.out.println("s = " + s);
}
}
beepbug
2005-05-15
打赏
举报
回复
如果你的编译器支持long long int类型,即可以存放10位数,那很容易解决666^666。我只说一个算法:你每乘一次666,就把积对10^10求模余,即只剩下低10位数。任何一位数学教师都会告诉你,扔掉的东西对最后的积是没用的。
aheadyes
2005-05-15
打赏
举报
回复
bxyqt(碧血银枪) 和 dext(德克斯特) 的代码;
就是 mysword 的实现啊。
这种题有纯粹的数学推导吗?
一开始还以为楼主要的是,根据666^666的某种性质:一步就能推出来的公式. 我数学菜没能看出来)
为什么要不断的模10^10?求的只最后的十位数啊.?
因为你要求的是最后10位啊,所以最后跟结果有关的肯定是最后10位
取模就去掉无关的位。这样不断相乘后取模,最后就为所求的结果。
bxyqt
2005-05-15
打赏
举报
回复
step1:s=1,k=0
step2:s=s*666,k=k+1
step3:if s>10^10 转换S为字符,取后10位,再将s转换为数字。
step4:if k<=666,转step2。
最后的结果S就是你所求的值。
gnefuil
2005-05-15
打赏
举报
回复
模10^10不就是求最后10位数么?
下面不是写了数学推导了嘛?
jp1984
2005-05-14
打赏
举报
回复
数学方法解决,很明显这是个数论上的题目, 只要求得 666^666(mod 10^10)就行了,但是如何求的结果是个困难的事情..
加载更多回复(2)
2010年一年级
数学
第一册教学总结.doc
2010年一年级
数学
第一册教学总结.doc
关于小学
数学
教学的经验总结.pdf
关于小学
数学
教学的经验总结.pdf
学校三班级
数学
下册教学总结五篇.docx
学校三班级
数学
下册教学总结五篇.docx
初中
数学
教师的个人工作述职报告.doc
初中
数学
教师的个人工作述职报告.doc
小学四年级
数学
心得.doc
小学四年级
数学
心得.doc
数据结构与算法
33,027
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章