循环数

题目描述
142857是一个六位数,我们发现:
142857 * 1 = 142857
142857 * 2 = 285714
142857 * 3 = 428571
142857 * 4 = 571428
142857 * 5 = 714285
142857 * 6 = 857142
即用1到6的整数去乘142857,会得到一个将原来的数首尾相接循环移动若干数字再在某处断开而得到的数字。
也就是说,如果把原来的数字和新的数字都首尾相接,他们得到的环是相同的。只是两个数的起始数字不一定相同。
请写一个程序,判断给定的数不是循环数。
输入描述:
输入包括多组数据。

每组数据包含一个正整数n,n是2到60位的正整数,并且允许前缀0。即001也是合法的输入数据。
输出描述:
对应每一组数据,如果是循环数,则输出“Yes”;否则,输出“No”。
示例1
输入
142857
012345
输出
Yes
No

def f1(str3):
N = 6
l = len(str3)
lt = []
for i in range(l):
lt.append(str3[i:l] + str3[0:i])
n = int(str3)
ret = ‘Yes’
for i in range(1, N):
num = str((i + 1) * n)
if len(num) + 1 == l:
num = ‘0’ + num
if num not in lt:
ret = ‘No’
break
# print(‘i=’,i)
print(ret)

def f2(str3):
l = len(str3)
lt = []
for i in range(l):
lt.append(str3[i:l] + str3[0:i])
n = int(str3)
ret = ‘No’
for i in lt:
m =int(i)
if m>n:
if m % n == 0:
if m//n > 1:
if m // n <=6:
ret = ‘Yes’
break
print(ret)

str2=input()
ll=len(str2)
while ll>=2 & ll<=60:
f2(str2)
str2 = input()
ll=len(str2)

你可能感兴趣的:(循环数)