无心人
发表于 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解。