无心人 发表于 2008-11-5 14:25:31

Prelude> let base=
Prelude> let all = [(x, y, z) | x <- base, y <- base, z <- base,z > 2 * x, x * x * x * 10
+ y * y * y == z * z * z]

medie2005 发表于 2008-11-5 14:31:12

呵呵,对k=1的情形,我们可以计算10的立方根,将每次得到的小数化为渐进分数,然后取分子和分母来做为z,x的值,看能不能碰上一个解。

无心人 发表于 2008-11-5 14:33:43

你如果有个好的计算连分数的算法
可以考虑这么做

无心人 发表于 2008-11-5 14:46:32

k = 1的取决于下列方程
是否有整数解
$x^3 + y^3 + z^3 + w^3 = t^3$

medie2005 发表于 2008-11-5 17:23:20

5^3+7^3+9^3+10^3=13^3

无心人 发表于 2008-11-5 17:28:30

10x^3 + y^3 = z^3
==>
(2x)^3 + x^3 + x^3 + y^3 = z^3

mathe 发表于 2008-11-5 18:10:13

$10^kx^3+y^3=z^3$
如果x不是7的倍数,两边对7取余数,可以得到
$10^k=+-2(mod 7)$
所以$k=2,5(mod 6)$
也就是k=1时的解必须有7|x

无心人 发表于 2008-11-5 19:29:41

立方
对7取余数
是否只有
0,1,6三个结果?

无心人 发表于 2008-11-5 20:26:45

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#define Max 10000

int isPower3(long long pow)
{
long long i, j, t, k;
double l1, l2;
if (pow == 1) return 1;

if ((pow % 2) == 0)
    if ((pow % 8) > 0) return 0;
else
    return (isPower3(pow >> 3));

if ((pow % 3) == 0)
    if ((pow % 27) > 0) return 0;
else
    return (isPower3(pow / 27));

if ((pow % 5) == 0)
    if ((pow % 125) > 0) return 0;
else
    return (isPower3(pow / 125));

if ((pow % 7) == 0)
    if ((pow % 343) > 0) return 0;
else
    return (isPower3(pow / 343));

l1 = log(pow) / 3 - 0.001;
l2 = l1 + 0.001;

i = floor(exp(l1) - 0.001);
j = floor(exp(l2) + 0.001);

for (t = i; t <= j; t ++)
{
    k = t * t * t;
    if (k == pow) return 1;
    if (k > pow) return 0;
}
return 0;
}


void Test(void)
{
long long i, j, t;
for (i = 7; i <= 7 * Max; i += 7)
    for (j = 1; j <= Max; j ++)
    {
      t = 10 * i * i *i + j * j * j;
      if (isPower3(t))
      printf("Find: %qd %qd %qd \n", i, j, t);
    }
}

int main(void)
{
long long p, t;
if (isPower3(8)) printf("8 is Club.\n");
if (isPower3(1000)) printf("1000 is Club.\n");
if (isPower3(8 * 27)) printf("8 * 27 is Club.\n");
if (isPower3(11 * 11 * 11)) printf("11 * 11 * 11 is Club.\n");
if (isPower3(11 * 11 * 13)) printf("11 * 11 * 13 is Club.\n");
if (isPower3(37 * 37 * 37)) printf("37 * 37 * 37 is Club.\n");

t = 100000;
p = t * (t + 1) * (t + 2);
if (isPower3(p))
    printf("%qd * %qd * %qd is Club.\n", t, (t + 1), (t + 2));


Test();
return 0;
}

遍取10000内结果,并没发现解

mathe 发表于 2008-11-19 11:06:16

原帖由 medie2005 于 2008-11-5 12:56 发表 http://bbs.emath.ac.cn/images/common/back.gif
现在,考虑立方情形。
即求解丢番图方程:
$x^{3}*10^{k}+y^{3}=z^3$   
现在我来考虑这个问题,目的是证明方程没有非0解。
页: 1 2 3 [4] 5 6
查看完整版本: 奇妙的平方数拆分组合(内含Pell方程链接)