标签: perfect-square

我可以依靠它来判断C++中的平方数吗?

我能依靠吗?

sqrt((float)a)*sqrt((float)a)==a
Run Code Online (Sandbox Code Playgroud)

要么

(int)sqrt((float)a)*(int)sqrt((float)a)==a
Run Code Online (Sandbox Code Playgroud)

检查一个数字是否是一个完美的正方形?为什么或者为什么不?
int a是要判断的数字.我正在使用Visual Studio 2005.

编辑:感谢所有这些快速答案.我看到我不能依赖浮点型比较.(如果我如上所述,最后a会被隐式地转换为浮动吗?)如果我这样做的话

(int)sqrt((float)a)*(int)sqrt((float)a) - a < e  
Run Code Online (Sandbox Code Playgroud)

我应该多小才能获得这个e价值?

编辑2:嘿,我们为什么不把比较部分放在一边,并决定是否(int)有必要?正如我所看到的那样,对于正方形而言,差异可能很大; 但没有它,非正方形的差异可能很小.也许两者都不会.:-(

c++ math floating-point perfect-square

5
推荐指数
3
解决办法
1473
查看次数

三个正数x,y,z的组合使得x + y,x-y,y + z,y-z,x + z和x-z是完美的正方形

早上好,我是新来的,我带来一个小问题.我无法为以下问题开发有效的算法:我需要找到三个正数x,y和z的组合,以便x + y,x - y,y + z,y - z,x + z和x - z是完美的正方形.问题是开发一种算法,该算法可以找到1到2,000,000之间的x,y和z的所有组合.

目前我使用的是for一个for肯定不会在我有孙子孙女之前结束的.

algorithm recursion perfect-square

5
推荐指数
1
解决办法
4801
查看次数

求一个数的平方的公式

我需要使用 for 循环显示数字 1-10 的平方。这是我到目前为止所拥有的。我不知道我错过了什么。任何帮助将非常感激。

        for (int counter = 1; counter <= 10; counter++)
        {                          
            Console.WriteLine(counter * counter);                
        }
        Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

.net c# for-loop perfect-square

4
推荐指数
1
解决办法
3万
查看次数

如果在Python中输入大数字时如何有效地找到范围内的完美正方形

问题是当输入数字非常大时,如何有效地找到给定范围内的完美正方形.我的解决方案是Time Limit Exceeded错误.我已经检查了以下链接,但它们没有解决我的问题:
- 完美广场上的Python程序
- 我如何检查一个数字是否是一个完美的正方形?
- 确定整数的平方根是否为整数的最快方法(我不知道如何实现Python中此链接中给出的解决方案).

问题是:

输入格式:第一行包含T,即测试用例的数量.随后是T测试用例,每个测试用例都在换行符中.每个测试用例包含两个空格分隔的整数,表示A和B.查找A和B范围内的所有完美正方形(包括两者).

输入示例:

2
3 9
17 24

我写的代码是:

import math
def is_perfect_square(n):
    return n % n**0.5 == 0

t = int(raw_input())
for i in range(t):
    numbers = map(int, raw_input().split())
    count = 0
    for j in xrange(numbers[0], numbers[1] + 1): # I also tried range() which gave memory error
        if (is_perfect_square(j)):
            count = count + 1

    print count
Run Code Online (Sandbox Code Playgroud)

虽然此代码适用于较小的数字,但它Time limit exceeded为大输入提供了错误.

(注意:gmpy不是一个选项,因为代码必须在没有gmpy模块的在线编译器上运行)

python largenumber perfect-square

3
推荐指数
1
解决办法
2441
查看次数

快速测试n ^ 2 +(n + 1)^ 2是否是完美平方的方法

我正在尝试编写代码来测试是否n^2 + (n+1)^2完美.由于我在编程方面没有太多经验,所以我只能使用Matlab.到目前为止,这是我尝试过的

function [ Liste ] = testSquare(N)

        if exist('NumberTheory')
           load NumberTheory.mat
        else
            MaxT = 0;
        end

        if MaxT > N 
            return
        elseif MaxT > 0 
            L = 1 + MaxT;
        else
            L = 1;
        end


    n = (L:N)';            % Makes a list of numbers from L to N
    m = n.^2 + (n+1).^2;   % Makes a list of numbers on the form A^2+(A+1)^2
    P = dec2hex(m);        % Converts this list to hexadecimal 

    Length = length(dec2hex(P(N,:))); %F …
Run Code Online (Sandbox Code Playgroud)

performance matlab perfect-square

2
推荐指数
1
解决办法
885
查看次数

Python - 在给定的大数范围内找到所有完美正方形的最快方法

我正在尝试编写一种方法来获取Python中给定范围内的所有完美正方形.大范围,如2621163和520001400002.现在明显迭代范围并检查数字是否完美如此

def is_square(n):
    return math.sqrt(n).is_integer()
Run Code Online (Sandbox Code Playgroud)

然后打印它对于大范围是愚蠢的(适用于小范围)并将永远.我想知道是否有任何Python魔法或mathemagic(比如改进的丢番图方程式)我可以为此目的利用.

编辑:我也使用Python 3.X所以我可以使用大整数.

perfect-square square-root python-3.x

1
推荐指数
1
解决办法
7082
查看次数

如何在不使用乘法的情况下对数字进行平方?

想知道是否有办法编写一个方法,在不使用操作符号(*)的情况下对数字(整数或小数/浮点数)进行平方.例如:方形24,平方2.5将是6.25,和3.5的将是12.25.

这是我的方法:

def square(num)
  number = num
  number2 = number
  (1...(number2.floor)).each{ num += number }
  num
end

puts square(2) #=> 4 [Correct]
puts square(16) #=> 256 [Correct]
puts square(2.5) #=> 5.0 [Wrong]
puts square(3.5) #=> 10.5 [Wrong]
Run Code Online (Sandbox Code Playgroud)

该代码适用于整数,但不适用于浮点数/小数.我在这做错了什么?此外,如果有人对这个问题采取新的方法,那么请分享.算法也很受欢迎.此外,考虑到该方法的性能将是一个加号.

ruby algorithm numbers perfect-square

1
推荐指数
1
解决办法
2101
查看次数

Numpy无法正确排列数组

我试图绘制一个简单的二次函数,其中zs是一个numpy数组,R是一个常数

Ns = -np.square(zs) + 2*zs*R+ 3*R**2
Run Code Online (Sandbox Code Playgroud)

它在大多数情况下工作正常,但出于某种原因,每当我将评估设置为以下代码中断时:

>>>zs = np.array(range(80262,80268)
>>>R = 26756
>>>Ns = -np.square(zs) + 2*zs*R+ 3*R**2
>>>print Ns
array([    642108,    535095,    428080,    321063,    214044
       4295074319], dtype=int64)
Run Code Online (Sandbox Code Playgroud)

数组中的最后一个值应该是107023.每当我超过80267时,平方功能完全断开并开始给我绝对荒谬的答案.这只是一个数据类型错误,还是我不知道的其他事情?

python arrays numpy function perfect-square

1
推荐指数
1
解决办法
184
查看次数

Leetcode中的完美广场

我无法理解其中一个Leetcode问题.

给定一个正整数n,找到完全平方数的数量最少(例如,1,4,9,16,...),其总和为n.

例如,给定n = 12,返回3,因为12 = 4 + 4 + 4; 给定n = 13,返回2,因为13 = 4 + 9.

解:

int numSquares(int n) {
    static vector<int> dp {0};
    while (dp.size() <= n) {
        int m = dp.size(), squares = INT_MAX;
        for (int i=1; i*i<=m; ++i)
            squares = min(squares, dp[m-i*i] + 1);
        dp.push_back(squares);
    }
    return dp[n];
}
Run Code Online (Sandbox Code Playgroud)

我真的不明白发生了什么min(squares,dp[m-i*i]+1).你能解释一下吗?

谢谢.

c++ math dynamic-programming perfect-square

1
推荐指数
2
解决办法
924
查看次数

在两个数组中找到对,这样当乘法成为一个完美的正方形时

给出两个这样的整数数组: -

int [] a = {2,6,10,13,1,178};
int [] b = {3,7,8,9,11,15};

如何从这两个数组中找到对,这样当它们成倍增加时它们就变成了完美的正方形?

对于例如,在上述阵列{2,8}{18,8}两对.

现在我的方法是暴力,我在这两个数组中循环: -

int count = 0;
for (int i = 0; i < arr1.Length; i++)
{
    for (int j = 0; j < arr2.Length; j++)
    {
         var x = arr1[i] * arr2[j];
         long s = (long)Math.Sqrt(x);
         if (x == s * s)
               count += 1;                   
     }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能有效地做到这一点?

c# arrays algorithm perfect-square

0
推荐指数
1
解决办法
143
查看次数