擅长:python、mysql、java
<p>做一些计算,<a href="http://www.wolframalpha.com/input/?i=((a%2Bbsqrt(c))%5E(1%2F3))+%2B+((a-bsqrt(c))%5E(1%2F3))+%3D+1" rel="nofollow noreferrer">I found out</a>那:</p>
<p><a href="https://i.stack.imgur.com/4hpxg.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4hpxg.png" alt="lolz"/></a></p>
<p>因此:</p>
<p><a href="https://i.stack.imgur.com/N7s9I.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/N7s9I.png" alt="lolzz"/></a></p>
<p>现在,由于浮点运算在基于二进制的<a href="https://stackoverflow.com/questions/588004/is-floating-point-math-broken">known reasons</a>系统中不精确,第一个公式很难精确计算。但是,<strong>第二个函数不涉及无理函数,而且<code>a</code>、<code>b</code>和<code>c</code>是整数,因此计算起来要容易得多,不存在浮点精度错误。</p>
<p>以下是智能解决方案:</p>
<pre><code>def is_cardano_triplet(a, b, c):
return (a + 1)**2 * (8*a - 1) - 27*b**2*c == 0
>>> is_cardano_triplet(2, 1, 5)
True
</code></pre>