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);
		}
	}
}
给个参考,自己写的,没在线测试