我能依靠吗?
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)有必要?正如我所看到的那样,对于正方形而言,差异可能很大; 但没有它,非正方形的差异可能很小.也许两者都不会.:-(
早上好,我是新来的,我带来一个小问题.我无法为以下问题开发有效的算法:我需要找到三个正数x,y和z的组合,以便x + y,x - y,y + z,y - z,x + z和x - z是完美的正方形.问题是开发一种算法,该算法可以找到1到2,000,000之间的x,y和z的所有组合.
目前我使用的是for一个for肯定不会在我有孙子孙女之前结束的.
我需要使用 for 循环显示数字 1-10 的平方。这是我到目前为止所拥有的。我不知道我错过了什么。任何帮助将非常感激。
for (int counter = 1; counter <= 10; counter++)
{
Console.WriteLine(counter * counter);
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud) 问题是当输入数字非常大时,如何有效地找到给定范围内的完美正方形.我的解决方案是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模块的在线编译器上运行)
我正在尝试编写代码来测试是否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) 我正在尝试编写一种方法来获取Python中给定范围内的所有完美正方形.大范围,如2621163和520001400002.现在明显迭代范围并检查数字是否完美如此
def is_square(n):
return math.sqrt(n).is_integer()
Run Code Online (Sandbox Code Playgroud)
然后打印它对于大范围是愚蠢的(适用于小范围)并将永远.我想知道是否有任何Python魔法或mathemagic(比如改进的丢番图方程式)我可以为此目的利用.
编辑:我也使用Python 3.X所以我可以使用大整数.
想知道是否有办法编写一个方法,在不使用操作符号(*)的情况下对数字(整数或小数/浮点数)进行平方.例如:方形2会4,平方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)
该代码适用于整数,但不适用于浮点数/小数.我在这做错了什么?此外,如果有人对这个问题采取新的方法,那么请分享.算法也很受欢迎.此外,考虑到该方法的性能将是一个加号.
我试图绘制一个简单的二次函数,其中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时,平方功能完全断开并开始给我绝对荒谬的答案.这只是一个数据类型错误,还是我不知道的其他事情?
我无法理解其中一个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).你能解释一下吗?
谢谢.
给出两个这样的整数数组: -
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)
我怎样才能有效地做到这一点?
perfect-square ×10
algorithm ×3
arrays ×2
c# ×2
c++ ×2
math ×2
python ×2
.net ×1
for-loop ×1
function ×1
largenumber ×1
matlab ×1
numbers ×1
numpy ×1
performance ×1
python-3.x ×1
recursion ×1
ruby ×1
square-root ×1