import java.util.ArrayList;
import java.util.Scanner;
public class Main {
// 定义输出数字
// 定义0-9
private static final String num0[] = new String[] { " - ", "| |", " ", "| |", " - " };
private static final String num1[] = new String[] { " ", " |", " ", " |", " " };
private static final String num2[] = new String[] { " - ", " |", " - ", "| ", " - " };
private static final String num3[] = new String[] { " - ", " |", " - ", " |", " - " };
private static final String num4[] = new String[] { " - ", "| |", " - ", " |", " " };
private static final String num5[] = new String[] { " - ", "| ", " - ", " |", " - " };
private static final String num6[] = new String[] { " - ", "| ", " - ", "| |", " - " };
private static final String num7[] = new String[] { " - ", " |", " ", " |", " " };
private static final String num8[] = new String[] { " - ", "| |", " - ", "| |", " - " };
private static final String num9[] = new String[] { " - ", "| |", " - ", " |", " - " };
// 定义操作符*
private static final String num10[] = new String[] { " ", " ", "*", " ", " " };
// 整合
private static final String allNum[][] = { num0, num1, num2, num3, num4, num5, num6, num7, num8, num9, num10 };
public static int[] dealLt10(int temp) {
String target = "" + temp;
int len = target.length();
int[] res = new int[len];
for (int i = 0; i < len; i++) {
res[i] = target.charAt(i) - 48;
}
return res;
}
public static ArrayList<Integer> getPrimeNumber(int num) {
// 结果数组
ArrayList<Integer> result = new ArrayList<Integer>();
// 最小质数 开始
int starNumber = 2;// 定义最小的质数
// 判断1
if (num <= 1) {
result.add(0);
} else {
// 在质数小于输入的数时,进行循环
while (starNumber <= num) {
if (starNumber == num) {// 当质数等于输入的数时,直接输出
// 输出字符
// result.add(num);
if (num >= 0 && num <= 9)
result.add(num);
else {
int[] temp = dealLt10(num);
for (int c = 0; c < temp.length; c++) {
result.add(temp[c]);
}
}
break;
} else if (num % starNumber == 0) {// 当输入的数与质数的余数为0时,输出这个质数
// 输出字符
// result.add(starNumber);
if (num >= 0 && num <= 9)
result.add(starNumber);
else {
int[] temp = dealLt10(starNumber);
for (int c = 0; c < temp.length; c++) {
result.add(temp[c]);
}
}
result.add(-1);
num = num / starNumber;// 把剩下的结果赋给num
} else {// 在余数不为0时,质数递增
starNumber++;
}
}
}
return result;
}
public static void printNumber(ArrayList<Integer> result) {
// 循环输出
for (int n = 0; n < 5; n++) {
for (int m = 0; m < result.si敏感词t temp = result.get(m);
if (temp == -1)
System.out.print(allNum[10][n]);
else
System.out.print(allNum[temp][n]);
}
System.out.println("");
}
}
public static void main(String[] args) {
int num;
Scanner cin = new Scanner(System.in);
while (cin.hasNextInt()) {
num = cin.nextInt();
// 获取素数数组
ArrayList<Integer> result = getPrimeNumber(num);
// 打印数组
printNumber(result);
}
}
}
给个参考,自己写的,没在线测试