数字这么小,在6的公倍数里递增穷举不是很简单?
int i,j;
for(i=1;i<=10000;i++){
j=i*6;
if(pow(pow(j/3,1/3),3)==j/3 && pow(sqrt(j/2),2)==j/2){
printf("%d",i);
break;
}
}
数字这么小,在6的公倍数里递增穷举不是很简单?
int i,j;
for(i=1;i<=10000;i++){
j=i*6;
if(pow(pow(j/3,1/3),3)==j/3 && pow(sqrt(j/2),2)==j/2){
printf("%d",i);
break;
}
}
i=6;
while(1)
{
a=(int)sqrt(i/2);
b=(int)pow(i/3,1.0/3);
if(a*a*2==i&&b*b*b*3==i)
{
printf("%d\n",i);
break;
}
i+=6;
}
sqrt开方函数
因为2*a*a = 3*b*b*b
所以a*a = 3/2 *b*b*b
a*a = 3/2 *b*b*b
a*a = b*b*b*3/2
令b=2^m*3^n*k
a*a = 2^(3m-1) * 3^(3n+1) * k^3
可得到通解:
a = 2^((3m-1)/2) * 3^((3n+1)/2) * k^1.5
当m=n=1,k=0的时候就能得到一组最小的解
[此贴子已经被作者于2007-9-16 2:12:50编辑过]
[此贴子已经被作者于2007-9-16 9:06:43编辑过]