gpt4 book ai didi

c# - 如何在 C# 中以 surd 形式留下根?

转载 作者:行者123 更新时间:2023-12-01 22:58:56 25 4
gpt4 key购买 nike

示例a:√12 =2√3

示例b:√16 = 4

我正在努力两者兼得。

虽然我当然可以使用 Math.Sqrt(4) 来实现结果 b,但我不知道如何实现 a ,或者进一步如何让两者同时工作,这就是目标。如何在 C# 中实现这种类型的简化?

我尝试了几个库,包括 MathNet、Symbolics 和 NCalc,但没有成功。 This post可能已经用 C++ 解决了它,尽管我不确定。我尝试转换该解决方案以查看它是否有效,但结果非常失败:

var outside_root = 1;
var inside_root = 800;
var d = 2;
while (d * d <= inside_root)
if (inside_root % (d * d) == 0) //# inside_root evenly divisible by d * d
{
inside_root = inside_root / (d * d);
outside_root = (outside_root * d);
}
while (d * d > inside_root) {
d = (d + 1);}

感谢您的帮助

最佳答案

给定的 C++ 无需进行大量更改即可转换为 C#。此外,还可以对原始算法进行一些修改,以减少乘法次数并提高整体性能:

    static (int, int) Sqrt2(int n)
{
int m = 1, d = 2;

int dSquared;
while ((dSquared = d * d) <= n)
{
while ((n % dSquared) == 0)
{
n /= dSquared;
m *= d;
}
d++;
}

return (m, n);
}

static void Main(string[] args)
{
Console.WriteLine(Sqrt2(12)); // prints (2, 3)
Console.WriteLine(Sqrt2(16)); // prints (4, 1)
Console.WriteLine(Sqrt2(13)); // prints (1, 13)
}

关于c# - 如何在 C# 中以 surd 形式留下根?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60468149/

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