1、问题描述
观察下面的算式:
* * × * * = * * *
它表示:两个两位数字相乘,结果是3位数。其中的星号(*)代表任意的数字,可以相同,也可以不同,只要不是在首位的就可以是0。
当然,满足这个要求的算式很多,但我们还有如下的要求:
所有星号所代表的数字全都是奇数。满足这个要求的算式就不多了。
比如:13 x 15 = 195
题目的任务是:编写程序,找到所有可能的情况。输出的结果中,每个情况占用1行,不需要考虑不同情况如何排序问题。
每行的格式如:
13 x 15 = 195
其中乘号用“x”表示。
2、代码实现
public class Main {
public static void main(String[] args) {
for(int i = 11;i <= 99;i++) {
for(int j = 11;j <= 99;j++) {
if(fun(i) && fun(j) && fun(i * j)) {
System.out.println(i + " x " + j + " = " + (i * j) );
}
}
}
}
//判断是否是奇数
public static boolean fun(int n) {
if(n >= 1000) {
return false;
}
int n1 = n % 10;
int n2 = n / 10 % 10;
int n3 = 1;
if(n > 99) {
n3 = n / 100;
}
return isSingle(n1) && isSingle(n2) && isSingle(n3);
}
public static boolean isSingle(int n) {
return n % 2 == 1;
}
}