我想找出一个数的所有基和指数。你知道吗
示例:
Number = 64
2^6=64
4^3=64
8^2=64
64^1=64
Number = 1845.28125
4.5^5=1845.28125
Number = 19683
3^9=19683
27^3=19683
19683^1=19683
我现在要做的是把‘Number’变成一个整数,只要看多次计算的结果,就会得到正确的结果:
basehits, expohits = [], []
if eval(Number) > 1000:
to = 1000 #base max 1000 in order to avoid too many calculations
else:
to = int(eval(Number))
for n in range(1,to):
for s in range(1,31): #just try with exponents from 1 to 30
calcres = pow(n,s)
if calcres == eval(Number):
basehits.append(n)
expohits.append(s)
elif calcres > eval(Number):
break
问题是它永远找不到浮点数,例如1845.28125
(见上文)。
只有结果是已知的,有没有更好的方法来求指数和基呢?你知道吗
你的问题需要更多的约束,但这里有一些帮助:
整数
对于整数,您可以查看数字的prime factors。一旦您知道64是
2**6
,就很容易列出您想要的所有结果。你知道吗现在,对于至少有两个不同素数因子的数,你期望得到哪个结果?例如:15应该是
3*5
、3**1 * 5**1
还是15**1
写的?你知道吗浮动
不清楚你的问题是如何定义为浮动的。你知道吗
4.5
有什么特别之处? 如果计算1845.28125**(1.0/5)
,Python返回4.5
,但是对于其他输入数字,结果可能会被1e-16关闭。你知道吗可能的解决方案
它迭代可能的指数,并计算基数。它将其舍入到9位小数,并检查错误是什么。如果足够小,则显示结果。你可以利用这些参数,找出最适合你的问题。 另外,它还可以处理整数(例如64和15)。你知道吗
最好使用Rational numbers。你知道吗
怎么样
输出为:
当然,你也可以加上:
得到
如果要添加小数点后有n位小数的分数,可以使用以下方法:
其中
decimal_digits
表示点后面的位数。你知道吗对于这个例子,答案是
4.5 5
例如,如果将
num
更改为39.0625
,decimal_digits
更改为2,则输出将为:2.5 4 6.25 2
相关问题 更多 >
编程相关推荐