我需要一种方法来计算Python中长整数的第n个根.
我试过了pow(m, 1.0/n),但它不起作用:
OverflowError:long int太大而无法转换为float
有任何想法吗?
通过长整数,我的意思是真正的长整数,如:
11968003966030964356885611480383408833172346450467339251 196093144141045683463085291115677488411620264826942334897996389 485046262847265769280883237649461122479734279424416861834396522 819159219215308460065265520143082728303864638821979329804885526 557893649662037092457130509980883789368448042961108430809620626 059287437887495827369474189818588006905358793385574832590121472 680866521970802708379837148646191567765584039175249171110593159 305029014037881475265618958103073425958633163441030267478942720 703134493880117805010891574606323700178176718412858948243785754 898788359757528163558061136758276299059029113119763557411729353 915848889261125855717014320045292143759177464380434854573300054 940683350937992500211758727939459249163046465047204851616590276 724564411037216844005877918224201569391107769029955591465502737961776799311859881060956465198859727495735498887960494256488224 613682478900505821893815926193600121890632
我正在研究计算数字的第n 个根的方法.但是,我遇到了负数的第 n 个根问题.
大多数人都说要使用Math.pow(num, 1 / root),但这对负数不起作用.
我试过这个:
public static double root(double num, double root) {
if (num < 0) {
return -Math.pow(Math.abs(num), (1 / root));
}
return Math.pow(num, 1.0 / root);
}
Run Code Online (Sandbox Code Playgroud)
但是,它不适用于所有数字,因为根可以是小数.例如root(-26, 0.8)返回-58.71,但这是无效输入.即使是根也会给出错误的答案.例如root(-2, 2)返回-1.41421,但-2没有平方根.
如果x'是最大整数,则x'是y的第n个根,使得x ^ n <= y.x,x'和y都是整数.有没有有效的方法来计算这样的第n个根?我知道这通常是由第n个根算法完成的,但这里的难点是一切都是整数,因为我正在使用嵌入式系统.
顺便说一句,我甚至尝试从1到y进行二进制搜索以识别最大x,使得x ^ n <= y,但由于x ^ n容易溢出,尤其是当n很大时,它不起作用.
我正在尝试这个问题一段时间但一次又一次地得到错误的答案.数字可能非常大<= 2 ^ 2014. 22086. Prime Power Test
关于我的算法的说明:
i直到log (n base 2)和exit.这是我的python代码请建议我,如果我做错了我不是很精通python所以我的算法有点冗长.提前致谢.
我的算法:
import math
import sys
import fractions
import random
import decimal
write = sys.stdout.write
def sieve(n):
sqrtn = int(n**0.5)
sieve = [True] * (n+1)
sieve[0] = False
sieve[1] = False
for i in range(2, sqrtn+1):
if sieve[i]:
m = n//i - i
sieve[i*i:n+1:i] = [False] * (m+1) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用包nthroot中的功能pracma。但是,每当我运行它时,我都会收到错误:
nthroot(x, 5) 中的错误:找不到函数“nthroot”
我尝试安装该pracma软件包,但这也没有帮助。谁能给我任何关于为什么这不起作用的想法?
计算数字的第n个根的最快方法是什么?
我知道Try and Fail方法,但我需要更快的算法.
我正在尝试为12到4(12**4)的功率制作一个简单的代码.我有输出数(20736),但是当我想要返回(20736)到它的原始值(12).我不知道如何在Python中做到这一点..在真实的数学中我用数学短语做到了{12؇}
问题是如何在Python中制作{12؇}?我使用的是sqrt(),但sqrt仅用于功率2
#!/usr/bin/env python3.3
import math
def pwo():
f=12 ** 4 #f =20736 #
c= # should c = 12 #
return f,c
print pwo()
Run Code Online (Sandbox Code Playgroud) 我正在寻找Python Nth根函数/算法,但在发布之前:NO INTEGER ROOT,HELL!
我在哪里可以获得至少一个如何编程产生精确float/的第N个根函数Decimal的指南?
这样的函数不返回1也不0是root(125, 1756482845)(第一个参数是数字,第二个是根深度(或东西)).
编辑:所以,你给了我这个解决方案:n ** (1.0 / exp)我在问这个问题时就知道了,但是它不适用于,例如,exp = 3.你无法1/3用有理数表达,所以125 ** (1/3)给出了不正确的结果4.999999....我要求一些"智能"算法,它给出了这么好的数字的正确结果,并且至少有4个小数点 - 准确的结果exp.如果没有这样的功能或算法,我将使用this(n ** (1/exp)).
在 Rust 中求任意数字的 n 次方根的最佳方法是什么?例如,num crate 只允许取整数类型的第 n 个主根,即下限或上限值...如何最接近实际值?