python小练习(040):循环数
python小练习(039):传送门今天我们来看一个有趣的数:循环数
714285是一个有趣的数,当把这个数的第1位移至最后1位,变成142857时,714285 = 142857 * 5
这表明,714285可以整除它左移一位所得的数,我们把这样的数称为循环数。
注:一对循环数应当值不相等,位数都至少2位,而且位数相同。如111111, 100001 这样特殊的数是不被称作循环数的。
求10**6以内的所有循环数之和。 解答:
#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: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 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)
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]