Math 确定x/y分数具有重复的十进制展开

Math 确定x/y分数具有重复的十进制展开,math,fractions,Math,Fractions,是否有任何快速的方法来确定x/y分数,只基于最后给出结果重复部分的整数?多谢各位 def repeatless(x, y): // some code here... return True 给定整数x和y,分数x/y具有重复的十进制展开式当且仅当: y/gcd(x,y)具有除2和5以外的因子,以及 x除以y后的余数不是零 注意:正如在评论中指出的,我最初的答案有一个缺陷,那就是它只有在x/y是不可约分数(最低值)时才起作用。这可以通过将y除以gcd(x,y)来修正,这样你就可

是否有任何快速的方法来确定x/y分数,只基于最后给出结果重复部分的整数?多谢各位

def repeatless(x, y):
    // some code here...
    return True

给定整数x和y,分数x/y具有重复的十进制展开式当且仅当:

  • y/gcd(x,y)具有除2和5以外的因子,以及
  • x除以y后的余数不是零
  • 注意:正如在评论中指出的,我最初的答案有一个缺陷,那就是它只有在x/y是不可约分数(最低值)时才起作用。这可以通过将y除以gcd(x,y)来修正,这样你就可以检查等价不可约分数的分母是否有除2和5的幂以外的因子

    第二个条件很容易检查:

    HasRepeatingDecimal(x, y)
    1. if x % y == 0 then return false
    
    现在我们需要看看y/gcd(x,y)是否有2和5以外的因子。我们可以通过重复地将y/gcd(x,y)除以5,然后再除以2,看看是否最终得到数字1:

    HasRepeatingDecimal(x, y)
    1. if x % y == 0 then return false
    2. y = y / gcd(x, y)
    3. while (y % 5 == 0) y = y / 5
    4. while (y % 2 == 0) y = y / 2
    5. if y == 1 then return true else return false
    

    您可以检查分母被2和5整除的原因是十进制有基数10,2和5是10的唯一素数因子。如果使用base-21,则应检查y/gcd(x,y)的形式是否为3^a x 7^b。

    给定整数x和y,分数x/y具有重复的十进制展开式,当且仅当:

  • y/gcd(x,y)具有除2和5以外的因子,以及
  • x除以y后的余数不是零
  • 注意:正如在评论中指出的,我最初的答案有一个缺陷,那就是它只有在x/y是不可约分数(最低值)时才起作用。这可以通过将y除以gcd(x,y)来修正,这样你就可以检查等价不可约分数的分母是否有除2和5的幂以外的因子

    第二个条件很容易检查:

    HasRepeatingDecimal(x, y)
    1. if x % y == 0 then return false
    
    现在我们需要看看y/gcd(x,y)是否有2和5以外的因子。我们可以通过重复地将y/gcd(x,y)除以5,然后再除以2,看看是否最终得到数字1:

    HasRepeatingDecimal(x, y)
    1. if x % y == 0 then return false
    2. y = y / gcd(x, y)
    3. while (y % 5 == 0) y = y / 5
    4. while (y % 2 == 0) y = y / 2
    5. if y == 1 then return true else return false
    

    您可以检查分母被2和5整除的原因是十进制有基数10,2和5是10的唯一素数因子。如果您使用的是base-21,您应该检查y/gcd(x,y)的形式是否为3^a x 7^b。

    您认为
    x
    y
    可能具有哪些值,因此它们的比率不是一个有理数?这是否回答了您的问题?如果x和y是整数,那么x/y总是有理的,并且您总是可以返回true,而无需执行任何其他代码。也许您真正感兴趣的是十进制表示法是有限的还是有重复部分。对不起,在描述问题时出错了。我正在寻找两个整数的多语言解决方案input@nesclass在数学中,有理数是一个数字,如−3/7,可以表示为两个整数的商或分数p/q,一个分子p和一个非零分母q。如果
    x
    y
    是整数,正如你所说,这个问题毫无意义,这就是定义。你认为
    x
    y
    可能有哪些值,以至于它们的比率不是一个有理数?这回答了你的问题吗?如果x和y是整数,那么x/y总是有理的,并且您总是可以返回true,而无需执行任何其他代码。也许您真正感兴趣的是十进制表示法是有限的还是有重复部分。对不起,在描述问题时出错了。我正在寻找两个整数的多语言解决方案input@nesclass在数学中,有理数是一个数字,如−3/7,可以表示为两个整数的商或分数p/q,一个分子p和一个非零分母q。如果
    x
    y
    是整数,正如你所说,这个问题没有意义,这就是定义。这是一个很好的解决方案,但在最好的情况下,我寻找非while函数,就像这里可以使用的任何数学属性一样。@nesclass数学属性是“y的形式为2^a*5^b,表示非负整数a和b”... 反复分割是检查脑海中出现的东西的第一种方法,但也许还有其他方法?@MarkDickinson Good catch,你完全正确。让我更新答案。这是一个很好的解决方案,但在最好的情况下,我会寻找非while函数,就像这里可以使用的任何数学属性一样。@nesclass数学属性是“y的形式为2^a*5^b,表示非负整数a和b”。。。反复分割是检查脑海中出现的东西的第一种方法,但也许还有其他方法?@MarkDickinson Good catch,你完全正确。让我更新答案。