循环数

本文介绍了一个判断循环数的算法,通过实例演示了如何通过乘法操作来验证一个给定的数字是否为循环数。循环数是指当用1到某个特定数字乘以该数时,得到的新数是原数的循环排列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述
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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值