python 解决除5之外的任意一个奇数一定可以被某位个数个9整除的问题

今天在菜鸟上看到一个编程的题目,当时挺感兴趣的。倒不是因为这个程序,而是这个问题

原题是说   输入一个奇数,然后判断最少几个 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值