gpt4 book ai didi

python : parasitic number

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:57 25 4
gpt4 key购买 nike

一般来说,可以乘以n的正自然数将最右边的数字移动到数字的前面称为 n-寄生数。这里 n 本身是一位正自然数。例如:4×128205=512820 4×128205=512820所以 128205 是一个 4 寄生数。不允许有前导零的自然数。所以尽管4×025641=1025644×025641=102564数字 025641 不是 4 寄生。

赋值:编写一个采用自然数的寄生函数。如果给定的自然数是 n 寄生数,则该函数必须返回值 n。否则,该函数必须返回值 0。

我的代码(最后一个定义 paraastic(number))在某些情况下不起作用,例如:parasitic(142857)n = 5,而使用我的代码时,我返回 0。

def rotateLeft(number):
"""
>>> rotateLeft(717948)
179487
>>> rotateLeft(142857)
428571
>>> rotateLeft(105263157894736842)
52631578947368421
"""

k = str(number)
letter = k[:1]
numb = k[1:]
resultaat = str(numb) + str(letter)
return int(resultaat)



def rotateRight(number):
"""
>>> rotateRight(179487)
717948
>>> rotateRight(428571)
142857
>>> rotateRight(52631578947368421)
15263157894736842
"""

k = str(number)
letter = k[-1]
numb = k[:-1]
resultaat = str(letter) + str(numb)
return int(resultaat)

def parasitic(number):
"""
>>> parasitic(179487)
4
>>> parasitic(142857)
5
>>> parasitic(105263157894736842)
2
>>> parasitic(1234)
0
"""


count = 0
getal = count * number

while getal != rotateLeft(number):
count += 1
getal = count * number
if getal == rotateLeft(number):
break
return (count)
else:
return 0

最佳答案

虽然使用 while 循环可以提高您对 Python 的掌握,但可以使用 % 运算符来简单地解决这个问题。

def rotateRight(number):
"""
>>> rotateRight(179487)
717948
>>> rotateRight(428571)
142857
>>> rotateRight(52631578947368421)
15263157894736842
"""
k = str(number)
return int(k[-1] + k[:-1])

def parasitic(number):
rotated = rotateRight(number)
if not rotated % number:
return rotated // number
else:
return 0

此测试查看 number 是否能被右旋转获得的数字整除,如果是,则返回除数(// 运算符对结果到最接近的整数,但我们已经知道结果必须是整数)

关于 python : parasitic number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47021335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com