鱼C论坛

 找回密码
 立即注册
查看: 2991|回复: 4

[技术交流] python小练习(040):循环数

[复制链接]
发表于 2016-12-6 19:24:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
python小练习(039):传送门

今天我们来看一个有趣的数:循环数

714285是一个有趣的数,当把这个数的第1位移至最后1位,变成142857时,714285 = 142857 * 5

这表明,714285可以整除它左移一位所得的数,我们把这样的数称为循环数。

注:一对循环数应当值不相等,位数都至少2位,而且位数相同。如111111, 100001 这样特殊的数是不被称作循环数的。

求10**6以内的所有循环数之和。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-7 21:35:42 | 显示全部楼层
解答:
  1. #coding:utf-8
  2. def is_cyc(n):
  3.     if str(n)[1] == '0'or str(n)[0] == str(n)[-1]:
  4.         return False
  5.     m = n
  6.     c = 0
  7.     while m>=10:
  8.         m //= 10
  9.         c += 1
  10.     m += n%(10**c)*10
  11.     return True if n%m == 0 else False

  12. s = 0
  13. for i in range(10,10**6):
  14.     if is_cyc(i):
  15.         s += i
  16. print (s)
复制代码

输出:
4714281
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-16 16:45:37 | 显示全部楼层
本帖最后由 shigure_takimi 于 2018-1-16 16:48 编辑
  1. def isCycleNumber(n):
  2.     a = str(n)
  3.     b = a[1:]+a[0]
  4.     if b[0] != '0' and  a!= b and n//int(b) == n/int(b):
  5.         return True
  6.    

  7. sumOfAllCycleNumber = 0
  8. for i in range(10, 10**6):
  9.     if isCycleNumber(i):
  10.         sumOfAllCycleNumber += i
  11. print(sumOfAllCycleNumber)

  12. #  4714281
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 09:14:10 | 显示全部楼层
  1. count = 0
  2. for i in range(12,500000):
  3.     if int(str(i)[-1]+str(i)[:-1]) % i == 0 and i!=int(str(i)[-1]+str(i)[:-1]):
  4.         count += int(str(i)[-1] + str(i)[:-1])
  5. print(count)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-26 14:23:25 | 显示全部楼层
def recycle(num):
    num = str(num)
    num_1 = num[1::] + num[0]
    num_1 = int(num_1)
    num = int(num)

    if (num % num_1 == 0 ) and (num != num_1) and (len(str(num)) == len(str(num_1))) \
                and (len(str(num_1)) >= 2):
        return True
    return False
s = 0
for i in range (10,10**6):
    if recycle(i):

        s = s + i
        print ( i , s , sep= ' ', end= '\n' )
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 21:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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