一个初等数论问题的编程

记得高二时侯,做过这么样一道题目,如今还 记忆犹新,题目是这样的:
    0,1,2,3,4,5,6能走成若干没有重复数字的七位数(共7!-6!种)
问是存在是55的倍数的?若存在,是那些,并且列出最小和最大值;若不存在,请说明理由。

    下面用初等数论知识进行解答
    有点繁,还是放到最后吧!

昨天,我请一个同学为该题编程,他说:“太小,么必要编程。”
顿时,我寒心了。也许真是那样,但我没有方弃。
经过连续几个小时思考,我便写了,如下代码:
这是用数学方法的解题过程:
假设存在这样的七位数N= abcdefg,
其中,a,b ,c,d,e,f,g为0,1,2,3,4,5,6的一个排列
从而,A=a+b+c+d+e+f+g=0+1+2+3+4+5+6=21
我们知道:
      若ab|c且(a,b)=1,则a|c且b|c
      要使55整除N,必须让5整除N且11整除N。
于是,g=0或5
        B=a-b+c-d+e-f+g=11k,    k为整数。
若a=0,则-10<B<10
那么,k只能取0
然而,A+B=2(a+c+e)=21
        根据奇偶分析法,知
        这是不可能的
若a=5,则-4<B<16
那么,k可能取0,1
当k=0时,由类似上面的方法知, 这也是不可能的
当k=1时,A+B=2(a+c+e)=22
              A-B=2(b+d+f)=10
          即   a+c+e=11
                b+d+f=5
         显然,b,d,f有一个是0
         否则,b+d+f>=1+2+3=6>5
           又  5能分解成1和4,2和3的组合
          所以 b,d,f是0,1,4或0,2,3的一个排列
 当b,d,f是0,1,4的一个排列时,a,c,e是2,3,6的一个排列
 当b,d,f是0,2,3的一个排列时,a,c,e是1,4,6的一个排列
故  存在N,共计72种。依次为:
6431205,... ,6031245 ,6034215 ,... ,1042635
其中,最大的是6431205 ,最小的是1042635
 
由于是初学者,又不善指出请多多斧正。     

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值