Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两个整数在某个基数中相等吗?_Python_Algorithm_Math - Fatal编程技术网

Python 两个整数在某个基数中相等吗?

Python 两个整数在某个基数中相等吗?,python,algorithm,math,Python,Algorithm,Math,免责声明:此问题纯粹是为了好玩。可能已经有了解决方案(我已经搜索过了,没有运气)。下面我有几个问题,如果您能回答,我将不胜感激。里尔 我的灵感来源于我之前看到的一段三个走狗的视频,其中显示13x7=28。你可能已经看到了。但我开始想:这个等式是否有一个“基础”是正确的(我把基础放在引文中,因为我用错了这个词……我的意思见最后一段) 答案显然是否定的,如果我们将乘法定义为与整数相同。如果你把13分解成“基”i,比如说13=1*i+3,和28=2*i+8,那么乘法因子7确保不会发生相等 好的,但是现

免责声明:此问题纯粹是为了好玩。可能已经有了解决方案(我已经搜索过了,没有运气)。下面我有几个问题,如果您能回答,我将不胜感激。里尔

我的灵感来源于我之前看到的一段三个走狗的视频,其中显示13x7=28。你可能已经看到了。但我开始想:这个等式是否有一个“基础”是正确的(我把基础放在引文中,因为我用错了这个词……我的意思见最后一段)

答案显然是否定的,如果我们将乘法定义为与整数相同。如果你把13分解成“基”i,比如说
13=1*i+3
,和
28=2*i+8
,那么乘法因子7确保不会发生相等

好的,但是现在假设你想问一个问题,两个数字相等时是否有基数,比如说8=10(我可能用错了“基数”这个词,对不起)

我的意思是,如果我们写8=008=0*8^2+0*8+8,10=010=0*8^2+1*8^1+0,那么根据我对base的用法(显然是错误的),我们是相等的。我写了一些简单的代码,最多3位数字,来验证这一点。但我的代码很烂

 ''' We define two numbers, such that n1 > n2...tho I'm flexible'''
n1 = "013"
n2 = "025"

''' Set the numbers as arrays. '''
num1 = list(range(len(n1)))
num2 = list(range(len(n2)))

for i in range(len(n1)):
     num1[i] = int(n1[i])
for i in range(len(n2)):
    num2[i] = int(n2[i])
''' Now we loop until we find a match, or no match is possible. '''
i = 1
j = 0
while True:
    t1=(num1[0]*(i**2)+num1[1]*i+num1[2])
    t2=(num2[0]*(i**2)+num2[1]*i+num2[2])
    ''' We need some way to check if t1 > t2 changes to t1 < t2 at some point
        or vise-versa -> then we know no match is possible '''
    if(i == 1):
        if t1>t2:
            j = 0
        else: j = 1
    if(t1==t2):        
        print("The numbers are equal in base %d" % i)
        break
    if(t2 > t1 and j == 0):
        print("No base possible! After %d steps" % i)
        break
    if(t1 > t2 and j == 1):
        print("No base possible! After %d steps" % i)
        break
    i=i+1
    if (i > 2**6):
        print("your search might be hopeless")
        break
''我们定义了两个数字,使得n1>n2…尽管我很灵活''
n1=“013”
n2=“025”
''将数字设置为数组''
num1=列表(范围(len(n1)))
num2=列表(范围(len(n2)))
对于范围内的i(len(n1)):
num1[i]=int(n1[i])
对于范围内的i(len(n2)):
num2[i]=int(n2[i])
“现在我们循环直到找到匹配项,否则不可能找到匹配项。”
i=1
j=0
尽管如此:
t1=(num1[0]*(i**2)+num1[1]*i+num1[2])
t2=(num2[0]*(i**2)+num2[1]*i+num2[2])
''我们需要某种方法来检查t1>t2是否在某个点改变为t1那么我们知道不可能有匹配''
如果(i==1):
如果t1>t2:
j=0
其他:j=1
如果(t1==t2):
打印(“基数%d”%i中的数字相等)
打破
如果(t2>t1且j==0):
打印(“在%d个步骤“%i”之后,不可能有基本内容)
打破
如果(t1>t2,j==1):
打印(“在%d个步骤“%i”之后,不可能有基本内容)
打破
i=i+1
如果(i>2**6):
打印(“您的搜索可能没有希望”)
打破
对不起,如果你的眼睛被那可怕的密码弄痛了。我甚至没有使用numpy数组。我想知道的是

  • 对于任意数字,这个问题以前解决过吗?如果不是

  • 我想在
    n1
    n2
    中输入的位数上灵活一些。是否有更聪明的方法来定义函数
    t1
    t2
    ,以便根据输入的位数自适应地在基
    i
    中展开

  • 就性能而言,我确信有更好的方法来完成我的主要迭代。这对我来说是有趣的部分,再加上第二部分的答案。有什么建议吗

  • 如果t1和t2始终保持相同的顺序,如代码中的示例所示,迭代将进行2^^6次。迭代次数是任意选择的,但可以想象,如果我们扩展到多个数字,可能需要更多的迭代!当然有更聪明的方法来停止迭代

  • 我的停车条件不对吗


  • 非常感谢你的阅读。这不是家庭作业,答案可能完全没用。我只是想看看真正的程序员对它的看法。如果这不是一个已经解决的问题,那就太好了。非常喜欢。

    你可以通过运用一些理论来简化这个问题。以你的第一个例子13x7=28为例,我们可以把它展开成一个基上的显式多项式:(1n+3)*7=2n+8


    如果此解有实根,则根是方程为真的n(基)的值。如果你喜欢这类问题,那么你应该阅读Shoup的计算数论。这是一本有趣的书。

    你的例子在以8为基数时是不相等的,它是以两个不同的基数表示的两个不同的数字(除了8不是以8为基数的数字)。你总是可以这样做,但这并不意味着你在问什么。要将一个以10为基数的数字转换成另一个基数的数字,你可以使用
    int(str(number),base)
    。我真的不明白,你问的是两个不同基数的数字在同一个基数上有相同的表示形式吗?我想我不清楚,或者只是很愚蠢。我的意思是做两个不同的整数,如果我们给它们加上0,根据我在t1和t2中的展开类型相等。我显然使用了错误的术语@蜥蜴比尔,我试图改变上面的措辞,因为我显然把命名法弄错了。@Amoss下面的回答,没有提供任何代码,实际上回答了我的问题。对于4位整数,可以找到精确解,尽管它们可能是复数。我一直在寻找“基”的整数值解,但我很乐意让这一点悬而未决。在四位数以上的情况下,我们仍然将问题转化为多项式方程,可以通过数值寻根技术来解决。伟大的谢谢各位。非常酷的阿莫斯,谢谢你们的建议。我会想象,如果我们超过四阶整数,那么通过类比四阶多项式,这不是一般意义上的平凡吗?我得去看看这本书。它可能会变得更容易——高次多项式会使搜索空间更稀疏,但简单的答案是它们不能满足。已经有一段时间了,很幸运我认识到了你的问题。很有趣,而且违反直觉。应用数学的家伙,我不懂数论。我的第一个想法是肯定有一些数字理论可以解释这个lol。例如,在回归中,由于搜索中的拓扑复杂性,更高的维度使事情变得非常困难。我不会要求你详细说明如何在更高的维度中更容易,我可能会查阅你推荐的书