jerryxjr1220 发表于 2016-12-6 19:24:40

python小练习(040):循环数

python小练习(039):传送门

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

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

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

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

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

jerryxjr1220 发表于 2016-12-7 21:35:42

解答:
#coding:utf-8
def is_cyc(n):
    if str(n) == '0'or str(n) == str(n)[-1]:
      return False
    m = n
    c = 0
    while m>=10:
      m //= 10
      c += 1
    m += n%(10**c)*10
    return True if n%m == 0 else False

s = 0
for i in range(10,10**6):
    if is_cyc(i):
      s += i
print (s)
输出:
4714281

shigure_takimi 发表于 2018-1-16 16:45:37

本帖最后由 shigure_takimi 于 2018-1-16 16:48 编辑

def isCycleNumber(n):
    a = str(n)
    b = a+a
    if b != '0' anda!= b and n//int(b) == n/int(b):
      return True
   

sumOfAllCycleNumber = 0
for i in range(10, 10**6):
    if isCycleNumber(i):
      sumOfAllCycleNumber += i
print(sumOfAllCycleNumber)

#4714281

JAY饭 发表于 2018-2-9 09:14:10

count = 0
for i in range(12,500000):
    if int(str(i)[-1]+str(i)[:-1]) % i == 0 and i!=int(str(i)[-1]+str(i)[:-1]):
      count += int(str(i)[-1] + str(i)[:-1])
print(count)

gonorth 发表于 2020-11-26 14:23:25

def recycle(num):
    num = str(num)
    num_1 = num + num
    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' )
页: [1]
查看完整版本: python小练习(040):循环数