找回密码
 欢迎注册
楼主: troy

[求助] 如何判读一个数的倍数全有8组成

[复制链接]
发表于 2008-9-29 15:15:30 | 显示全部楼层
不用大数运算,在 n 是一个常规整数时。
因为中途即用模运算,而不是算完了再取模。
你可以先学习一下初等数论。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-29 15:19:29 | 显示全部楼层
谢谢啊!差不多会了!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-9-29 16:21:47 | 显示全部楼层
原帖由 gxqcn 于 2008-9-29 15:15 发表
不用大数运算,在 n 是一个常规整数时。
因为中途即用模运算,而不是算完了再取模。
你可以先学习一下初等数论。


求一个数所有因子的时候,有什么好方法可以加快速度?

另外发现n=3的时候,公式不适用!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-6 14:54:13 | 显示全部楼层
我在回老家途中车上就注意到了楼上最后一句的问题,
可惜无法上网修正。

X = 88...8(x个8) = 8/9 * (10^x - 1)

所以 n|X 与否,不仅要考虑分子的贡献,还要考虑分母的约束。

修正的解答版本如下:

Input :正整数 n,
Output:最小的x,使得x个“8”可被n整除(若不存在,返回x=0)
算法:
1、if (n|8) then return x=1;
2、if (2|n or 5|n) then return x=0;
3、计算:x=10对模n的指数(方法见2#);
4、if (3|n and 3∤x) then x=x*3;
5、if (9|n and 9∤x) then x=x*3;
6、return x;
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-3 20:45 , Processed in 0.041490 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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