今天在菜鸟上看到一个编程的题目,当时挺感兴趣的。倒不是因为这个程序,而是这个问题
原题是说 输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。
程序如下:
当然现在说的不是程序本身,而是这里面的数学,哈哈,本人是学基础数学的,刚好用到。
再说一下题目,任何一个不是5的奇数都可以被 9.。。。9这种数整除。
实际上这个问题只需要考查除了5之外的奇素数,p,在学 abstract algebra(抽象代数)的时候一定学过Zp,即整数环模掉素数p,
这是一个整环,也是一个有限域,因为10^n这个数一定是在Zp中的,注意是取模之后在里面,可以理解为全体整数按除以p所得的余数分成了10类,
那么必定有10^n=10^m方这种情况,这很好想,因为那里面总共就p个数,而10^m当,m在动的时候可是很多呀,
所以一定有一个数k such that 10^k = 1, 而这就是意味着 10^k-1==p。搞定啦,
回到为啥刚才只用考虑奇素数的问题,这个更好回答,因为任意一个奇数都可以分解成素数的乘积,比如15=3*5.
if __name__ == '__main__': zi = int(raw_input('输入一个数字:\n')) n1 = 1 c9 = 1 m9 = 9 sum = 9 while n1 != 0: if sum % zi == 0: n1 = 0 else: m9 *= 10 sum += m9 c9 += 1 print '%d 个 9 可以被 %d 整除 : %d' % (c9,zi,sum) r = sum / zi print '%d / %d = %d' % (sum,zi,r)