高手帮我检查下这个java小程序,多谢!
条件:x<y<z,x^3+y^3=z^3+1,用程序找出头10组符合条件的x,y,z数值,由x增长顺序显示出结果。主要就是可以快速给出结果,我目前发现的是用while最快...
条件:x<y<z, x^3 + y^3 = z^3 +1, 用程序找出头10组符合条件的x,y,z数值,由x增长顺序显示出结果。
主要就是可以快速给出结果,我目前发现的是用while最快了。
但是问题是第二组开始给出的结果就都是错的了‘‘‘
可以给出解决方法吗?谢谢
import java.util.*;
public class ThreesZ{
public static void main(String []args){
int x;
int y;
int count =0;
double z =1.0;
x = 1;
y = 2;
while(count < 15){
while(x<10000){
while(y>x){
z = Math.cbrt(Math.pow(x,3) + Math.pow(y,3) - 1);
if(z == (int)z && y<z){
System.out.println("x = " + x + " y = " + y + " z = " + (int)z);
count ++;
}
y++;
x++;
z++;
}
}
}
}
} 展开
主要就是可以快速给出结果,我目前发现的是用while最快了。
但是问题是第二组开始给出的结果就都是错的了‘‘‘
可以给出解决方法吗?谢谢
import java.util.*;
public class ThreesZ{
public static void main(String []args){
int x;
int y;
int count =0;
double z =1.0;
x = 1;
y = 2;
while(count < 15){
while(x<10000){
while(y>x){
z = Math.cbrt(Math.pow(x,3) + Math.pow(y,3) - 1);
if(z == (int)z && y<z){
System.out.println("x = " + x + " y = " + y + " z = " + (int)z);
count ++;
}
y++;
x++;
z++;
}
}
}
}
} 展开
3个回答
展开全部
(不好意思,昨天有事,没能解答)
刚看了下,改写了下,为了方便测试个别数值改了下.因为仍然计算很慢,所以没测试完,但是很快出来了两组数.
public class ThreesZ {
public static void main(String[] args) {
int x;
int y;
int count = 0;
double z = 1.0;
x = 1;
while (count < 15) {
while (x < 100) {
y = x + 1;//将y变为动态赋值,移至循环内
while (y > x && y < 100) {
z = Math.cbrt(Math.pow(x, 3) + Math.pow(y, 3) - 1);
if (z == (int) z && y < z) {
//z == (int) z,之前我也想过这么做.不过
//没想到好方法,你的用法挺巧妙的
System.out.println("x = " + x + " y = " + y + " z = "
+ (int) z);
count++;
}
y++;
//将x++移到循环外,因为在这里x++无意义.
//撤销z++,不需要
}
x++;//x++移到此处
}
}
}
}
刚看了下,改写了下,为了方便测试个别数值改了下.因为仍然计算很慢,所以没测试完,但是很快出来了两组数.
public class ThreesZ {
public static void main(String[] args) {
int x;
int y;
int count = 0;
double z = 1.0;
x = 1;
while (count < 15) {
while (x < 100) {
y = x + 1;//将y变为动态赋值,移至循环内
while (y > x && y < 100) {
z = Math.cbrt(Math.pow(x, 3) + Math.pow(y, 3) - 1);
if (z == (int) z && y < z) {
//z == (int) z,之前我也想过这么做.不过
//没想到好方法,你的用法挺巧妙的
System.out.println("x = " + x + " y = " + y + " z = "
+ (int) z);
count++;
}
y++;
//将x++移到循环外,因为在这里x++无意义.
//撤销z++,不需要
}
x++;//x++移到此处
}
}
}
}
展开全部
import java.util.*;
public class ThreesZ{
public static void main(String []args){
int x;
int y;
int count =0;
double z =1.0;
x = 1;
y = 2;
while(count < 15){
while(x<10000){
while(y>x){
z = (int) Math.cbrt(Math.pow(x,3) + Math.pow(y,3) - 1);//直接在结果中强制转化,不知道楼主是不是这个意思
if(z == (int)z && y<z){
System.out.println("x = " + x + " y = " + y + " z = " + (int)z);
count ++;
}
y++;
x++;
z++;
}
}
}
System.out.println("iodfjdfj");
}
}
public class ThreesZ{
public static void main(String []args){
int x;
int y;
int count =0;
double z =1.0;
x = 1;
y = 2;
while(count < 15){
while(x<10000){
while(y>x){
z = (int) Math.cbrt(Math.pow(x,3) + Math.pow(y,3) - 1);//直接在结果中强制转化,不知道楼主是不是这个意思
if(z == (int)z && y<z){
System.out.println("x = " + x + " y = " + y + " z = " + (int)z);
count ++;
}
y++;
x++;
z++;
}
}
}
System.out.println("iodfjdfj");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.*;
public class ThreesZ{
public static void main(String []args){
int x;
int y;
int count =0;
double z =1.0;
x = 1;
y = 2;
while(count < 10){//要求为10组,所以15改为10。
while(x<10000){
while(y>x){
z = Math.cbrt(Math.pow(x,3) + Math.pow(y,3) - 1);
if(z == (int)z && y<z){
System.out.println("x = " + x + " y = " + y + " z = " + (int)z);
count ++;
}
x++;
//将y++退出到外层循环,去掉z++
}
y++;
}
}
}
}
思路错误,在参数x与y比较时,只需要x自加,错时,y自加,而z每次执行都会给其设值。
public class ThreesZ{
public static void main(String []args){
int x;
int y;
int count =0;
double z =1.0;
x = 1;
y = 2;
while(count < 10){//要求为10组,所以15改为10。
while(x<10000){
while(y>x){
z = Math.cbrt(Math.pow(x,3) + Math.pow(y,3) - 1);
if(z == (int)z && y<z){
System.out.println("x = " + x + " y = " + y + " z = " + (int)z);
count ++;
}
x++;
//将y++退出到外层循环,去掉z++
}
y++;
}
}
}
}
思路错误,在参数x与y比较时,只需要x自加,错时,y自加,而z每次执行都会给其设值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询