我在Java上为Euler做了这个,它只是一遍又一遍地打印0。我不知道我做错了什么,请帮忙吗?
class Euler
{
public static void main (String[]args)
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;
int palindrome = 0;
boolean run = true;
while (run == true) {
for (int f4 = 999; f4 >= 100; f4--) {
for (int f5 = f4; f5 >= 100; f5--) {
palindrome = f4 * f5;
f = (palindrome % 10);
e = (palindrome % 100 - f);
d = (palindrome % 1000 - e);
c = (palindrome % 10000 - d);
b = (palindrome % 100000 - c);
a = (palindrome % 1000000 - b);
if (a == 0) {
if ((b == f) && (c == e)) {
run = false;
}
} else {
if ((a == f) && (b == e) && (c == d)) {
run = false;
}
}
}
}
int[] nums = new int[1];
nums[0] = palindrome;
{
System.out.println(Arrays.toString(nums));
}
}
}
}
它应该找出由两个三位数字的乘积组成的最大回文。
答案 0 :(得分:3)
您的循环从不输入。当你说,
for (int f4 = 999; f4 == 100; f4--) {
999
不是==
100,因此会跳过循环。我想你想要
for (int f4 = 999; f4 >= 100; f4--) {
与下一个循环相同的问题。
for (int f5 = f4; f5 >= 100; f5--) { // <-- not == 100