检查完美正方形的最短方法?
可能的重复: 是什么是一个好算法如果输入是一个完美的正方形? 我想要最短,最简单的检查数字是C# 中的完美平方 一些完美的正方形: 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, ...... 解决方案 可能检查数字的平方根是否具有小数零件,或者是否是整数. 实施,我会考虑这样的事情: double result = Math.Sqrt(numberToCheck); bool isSquare = result%1 == 0; isSquare现在应该为true,对于所有正方形,false false 其他解决方案 这是检查平方根是否积分的变体: bool IsPerfectSquare(double input) { var sqrt = Math.Sqrt(input); return Math.Abs(Math.Ceiling(sqrt) - Math.Floor(sqrt))
0 2024-04-17
编程技术问答社区
负数的平方根
只是想知道,是否可以计算C#中负数的正方头? 例如sqrt(-1)= i. 我写了这件代码: using System; public static class sqrts { public static void Main() { string x; double sqrtofx; Console.Write("Enter a number: "); x = Console.ReadLine(); sqrtofx = Math.Sqrt(Convert.ToInt32(x)); Console.WriteLine("\nSqrt({0}): {1}", x, sqrtofx); Console.ReadKey(); } } 如果我输入25,则给出5.但是,如果我放入-5,它给出了nan而不是5i. . 解决方案 有一个C
8 2024-04-16
编程技术问答社区
C/C++中的快速反平方双数
最近,我正在介绍一个节目,其中热点肯定是这个 double d = somevalue(); double d2=d*d; double c = 1.0/d2 // HOT SPOT 之后不使用该值D2,因为我只需要值c.一段时间以前 我需要非常准确的精度,我检查了我的程序没有使用GCC -FFAST -MATH选项给出正确的结果. (G ++ -4.5) 解决方案 做快速根源的技巧,类似的技巧通过牺牲精度来获得其性能. (嗯,大多数.) 您确定需要double精度吗?您可以很容易地牺牲精度: double d = somevalue(); float c = 1.0f / ((float) d * (float) d); 在这种情况下,1.0f绝对是必不可少的,如果您使用1.0,则可以获得double precision. 您是否尝试在编译器上启用"草率"数学?在GCC上,您可以使用-ffast-math,其他编译器也有类似的选项.草率的数
0 2024-04-08
编程技术问答社区
使用牛顿-拉弗森方法在C语言中求平方根
在以下代码中,我想将终止条件替换为:如果猜法和x的比率接近1,而环应终止.我尝试了各种表达式,但没有一个正确运行代码.有任何建议吗? # include float absolute(float x) { if (x = 0.0001 ) guess = ((x/guess) + guess) / 2; return guess; } int main(void) { printf("square root of 2 is %f\n", square(2)); printf("square root of 3 is %f\n", square(3)); retu
2 2024-04-07
编程技术问答社区
使用比特移位寻找整数平方根的最快方法是什么?
我正在寻找计算数字(整数)平方根(整数)的最快方法.我在Wikipedia遇到了该解决方案,该解决方案找到了一个数字的平方根(如果它是完美的正方形)或其最近的下部完美正方形的平方根(如果给定的数字不是一个完美的正方形: short isqrt(short num) { short res = 0; short bit = 1 num) bit >>= 2; while (bit != 0) { if (num >= res + bit) { num -= res + bit; res = (res >> 1
2 2024-03-31
编程技术问答社区
在Java中确定一个大整数是否是素数
我正在尝试验证 biginteger 输入的数字是否是 prime数字 ! 但是,对于 13,31 (例如 15 ),它的运行良好,例如 13,31 ;通过将其宣布为素数.我无法弄清楚这个错误,可能它隐藏在 squareroot()方法方法 binary-search ! 的方法中 请查看代码,并帮助我指出错误!! 调用代码: - boolean p=prime(BigInteger.valueOf(15)); System.out.println("P="+p); 称为代码: - public static boolean prime(BigInteger bi2){ if(bi2.equals(BigInteger.valueOf(2)) || bi2.equals(BigInteger.valueOf(3))) { return true; } BigInteger bi,bin; bi
2 2024-03-30
编程技术问答社区
二进制搜索计算平方根 (Java)
我需要帮助编写一个程序,该程序使用二进制搜索来递归计算输入非阴性整数的平方根(向下到最近的整数). 这是我到目前为止所拥有的: import java.util.Scanner; public class Sqrt { public static void main(String[] args) { Scanner console = new Scanner(System.in); System.out.print("Enter A Valid Integer: "); int value = console.nextInt(); calculateSquareRoot(value); } public static int calculateSquareRoot(int value) { while (value > 0) { double sqrt = (int) Math.sqrt(
6 2024-03-30
编程技术问答社区
BigInteger的第N个根
我正在使用一个biginteger对象.使用正常的int或longs,我可以使用Math.pow(数字,1/nth root)获取第n个根.但是,这将无法与BigInteger一起使用.有什么办法可以做到吗? 我实际上不需要根,只是要知道它是否是完美的力量. 我正在用它来弄清楚给定的biginteger是否是一个完美的方形/立方体/等. 解决方案 牛顿的方法与整数非常有效;在这里,我们计算最大的数字 s ,假设这两个 k 和 n 是正: function iroot(k, n) k1 := k - 1 s := n + 1 u := n while u
2 2024-03-30
编程技术问答社区
计算任意大整数的整数平方根(isqrt)的有效算法
注意 对于Erlang或C / C++中的解决方案,请转到下面的试用4 . Wikipedia文章 Integer Square root 可以在此处找到"整数平方根"的定义 计算方形根的方法 可以在此处找到" bit magic" 的算法 [试验1:使用库功能] 代码 isqrt(N) when erlang:is_integer(N), N >= 0 -> erlang:trunc(math:sqrt(N)). 问题 此实现使用C库中的sqrt()函数,因此它不适用于任意大整数(请注意,返回的结果与输入不匹配.正确的答案应为12345678901234567890): Erlang R16B03 (erts-5.10.4) [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] Eshell V5.10.4 (
8 2024-03-30
编程技术问答社区
怎样才能找到Java大整数的平方根?
是否有一个库可以找到biginteger的平方根?我希望它能离线计算 - 只有一次,而不是在任何循环中.因此,即使是计算昂贵的解决方案也可以. 我不想找到一些算法并实现.随时可用的解决方案将是完美的. 解决方案 只是为了娱乐: public static BigInteger sqrt(BigInteger x) { BigInteger div = BigInteger.ZERO.setBit(x.bitLength()/2); BigInteger div2 = div; // Loop until we hit the same value twice in a row, or wind // up alternating. for(;;) { BigInteger y = div.add(x.divide(div)).shiftRight(1); if (y.equals(div) ||
6 2024-03-30
编程技术问答社区
Java中BigDecimal的平方根
我们可以仅使用Java API而不使用定制的100行算法来计算Java中A BigDecimal的平方根? 解决方案 我已经使用过了,它运行良好. 这是算法如何在高级别工作的示例. 编辑:我很想知道下面定义的准确性.这是官方资料: 的SQRT(2) (first 200 digits) 1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157273501384623091229702492483605585073721264412149709993583141322266592750559275579995050115278206057147 在这里,它使用下面的方法I概述,SQRT_DIG等于150: (first 200 digits) 1.4142135623730950488016887242096980785
10 2024-03-30
编程技术问答社区
本地批处理中的三角函数和平方根?
我正在制作一个工具,其中在整个过程中显示了该三角形: :draw echo ^|\ echo ^|a\ echo ^| \ echo ^| \ echo ^| \ C echo A^| \ echo ^| \ echo ^| \ echo ^|c b\ echo ^|---------\ echo B GOTO:EOF 在任何字母中,有变量.首先,用户选择他们拥有的角度值.然后他们选择一个侧面值.之后,所有值都会自动填充.在我的源代码中,我只有sin(A)或类似的占位符,直到我可以在本机批处理中找到Trig函数(SIN,COS,TAN)和Squareroot. 代码: http://pastebin.com/bdfy84vr 解决方案 您可以使用表(真的 array )将输入值(度)映射到值乘以公共因素的罪恶中,因此您可以使用这种情况实现Aritmethic操
0 2024-03-29
编程技术问答社区
uint64_t与int64_t的平方值
我注意到,计算uint64_t平方根的整数部分比int64_t的整数要复杂得多.拜托,有人对此有解释吗?为什么要处理一个额外的位置似乎更加困难? 以下内容: int64_t sqrt_int(int64_t a) { return sqrt(a); } 用clang 5.0和-mfpmath=sse -msse3 -Wall -O3编译到 sqrt_int(long): # @sqrt_int(long) cvtsi2sd xmm0, rdi sqrtsd xmm0, xmm0 cvttsd2si rax, xmm0 ret 但以下内容: uint64_t sqrt_int(uint64_t a) { return sqrt(a); } 编译到: .LCPI0_0: .lo
12 2024-03-17
编程技术问答社区
寻找ARM Thumb2的高效整数平方根算法
我正在寻找一种快速的,仅整数的算法来找到无符号整数的平方根(整数部分). 该代码必须在ARM Thumb 2处理器上具有出色的性能.它可以是汇编语言或C代码. 欢迎任何提示. 解决方案 integer Square by Jack W. Crenshaw可以用作另一个参考. /a>.这超出了整数结果,还可以计算答案的额外分数(固定点)位. (更新:不幸的是,C摘要存档现在已停用. #define BITSPERLONG 32 #define TOP2BITS(x) ((x & (3L > (BITSPERLONG-2)) struct int_sqrt { unsigned sqrt, frac; }; /* usqrt: ENTRY x: unsigned long EXIT returns floor(sqrt(x) * pow(2, BITSPERLONG/2)) Since
4 2024-03-03
编程技术问答社区
求苏尔德形式的平方根
我正在尝试构建一个程序,如果答案不是整数,则可以使您乘以两个正方形并以Surd形式显示答案. 我已经看到了答案>和在这里,尽管我不了解C ++和C#,所以我没有关于该怎么做的线索.我完成的第一件事是将正方形根部内的两个数字乘在一起,然后如果它是整数,我可以显示答案,但是如果不是整数,它就完全混乱了. 解决方案 我看不到考虑给定数字,总结素数的多重性,提取倍数的偶数部分并形成产品的平方根. ,例如 √(84.375)=√(2²3.7.3.5³)=√(2²3²5³7)=2.3.5√(5.7)=30√35 其他解决方案 尝试使用>>>import sympy >>>sympy.sqrt(8) 2*sqrt(2)
14 2024-01-23
编程技术问答社区
JavaScript-改进的算法,不用Math.sqrt就能找到完全平方的平方根
我正在尝试通过划痕学习算法和编码内容.我写了一个只能找到正方形数的正方形的函数,但是我需要知道如何提高其性能,并可能返回非平方数字的正方形根 function squareroot(number) { var number; for (var i = number; i >= 1; i--) { if (i * i === number) { number = i; break; } } return number; } alert(squareroot(64)) 将返回8 最重要的是,我需要知道如何提高这种表现.我真的不在乎其有限的功能 解决方案 这是我可以建议的一个小改进.首先 - 从0开始迭代.第二次候选者的平方超过number. function squareroot(number) { for (var i = 0; i * i
4 2024-01-23
编程技术问答社区
用代数法简化平方根
我想以数值来简化整数代数的平方根,而不是数值计算,即√800应该是20√2,而不是 28.2842712474619 . 我找不到通过编程解决此问题的任何方法:( 解决方案 对根下的数字分解,挑出成对出现的因素,然后将其余的因子放在根部. √800=√(2 x 2 x 2 x 2 x 2 x 5 x 2 x 5)=√(2 2 x 2 2 2 x 5 2 x 2)= (2 x 2 x 5)√2=20√2. 和完整性,这里有一些简单的代码: outside_root = 1 inside_root = 800 d = 2 while (d * d
4 2024-01-22
编程技术问答社区
用整数运算计算第N个根
有几种方法可以仅使用整数算术找到整数正方形.例如这个.它使阅读有趣,也是一个非常有趣的理论,尤其是对于我这一代人不再有用的那一代. 最主要的是它不能使用浮点算术,因此将纽顿方法排除在外.我唯一知道的根源是二项式扩展,但这也需要浮点算术. 只有使用整数算术计算积分n根的哪些技术/算法? 编辑:感谢到目前为止的所有答案.他们似乎都更加聪明地试验和改进.没有更好的方法吗? edit2:好的,因此,如果没有试用/改进,纽顿方法或二进制搜索似乎没有明智的方法可以做到这一点.谁能在理论上提供两个的比较?我在两者之间运行了许多基准,并发现它们非常相似. 解决方案 您可以仅使用整数算术使用牛顿的方法,该步骤与浮点算术相同,除非您必须用具有不同语言的相应整数运算符替换浮点运算符, 假设您想找到a > 0的整数,它应该是最大的整数r,以便r^k
8 2024-01-22
编程技术问答社区