当你学一些可视化程序设计语言时,老师经常会让你设计并且编程做出一个计算器,这时也许你会仿照windows系统自带的计算器外观和功能去设计,但是现在老师要你多做出一个有新功能的计算器,实现当输入一个数时,能够将这个数分解成一个或多个素因子乘积的形式,并按素因子的大小排列显示出来。大家对计算器中数的表示应该很清楚的。下面显示出了0 — 9这十个数字的表示形式。每个数字都占据5 * 3大小的字符区域
输入
输入有多组测试数据,每组包括一个正整数n(1 < n <= 1000000)。
输出
对于每个数,将它分解成若干个素数乘积的形式,并按从小到大的顺序输出,素因子之间用“ * ”的形式连接。
样例输入
10
2
样例输出
- -
| |
- * -
| |
- -
-
|
-
|
-
C++源码如下
#include <iostream>
#include <vector>
using namespace std;
int getch(int num, char ch[5][10000], int n)
{
int tmp = 1;
while (num / tmp / 10 != 0) {
tmp *= 10;
};
if (n != 0)
{
ch[0][n] = ' ';
ch[1][n] = ' ';
ch[2][n] = '*';
ch[3][n] = ' ';
ch[4][n++] = ' ';
}
while (tmp != 0) {
int t = num / tmp % 10;
tmp = tmp / 10;
switch (t) {
case 0:
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
ch[0][n] = '-';
ch[1][n] = ' ';
ch[2][n] = ' ';
ch[3][n] = ' ';
ch[4][n++] = '-';
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
break;
case 1:
ch[0][n] = ' ';
ch[1][n] = ' ';
ch[2][n] = ' ';
ch[3][n] = ' ';
ch[4][n++] = ' ';
ch[0][n] = ' ';
ch[1][n] = ' ';
ch[2][n] = ' ';
ch[3][n] = ' ';
ch[4][n++] = ' ';
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
break;
case 2:
ch[0][n] = ' ';
ch[1][n] = ' ';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
ch[0][n] = '-';
ch[1][n] = ' ';
ch[2][n] = '-';
ch[3][n] = ' ';
ch[4][n++] = '-';
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = ' ';
ch[4][n++] = ' ';
break;
case 3:
ch[0][n] = ' ';
ch[1][n] = ' ';
ch[2][n] = ' ';
ch[3][n] = ' ';
ch[4][n++] = ' ';
ch[0][n] = '-';
ch[1][n] = ' ';
ch[2][n] = '-';
ch[3][n] = ' ';
ch[4][n++] = '-';
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
break;
case 4:
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = ' ';
ch[4][n++] = ' ';
ch[0][n] = ' ';
ch[1][n] = ' ';
ch[2][n] = '-';
ch[3][n] = ' ';
ch[4][n++] = ' ';
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
break;
case 5:
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = ' ';
ch[4][n++] = ' ';
ch[0][n] = '-';
ch[1][n] = ' ';
ch[2][n] = '-';
ch[3][n] = ' ';
ch[4][n++] = '-';
ch[0][n] = ' ';
ch[1][n] = ' ';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
break;
case 6:
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
ch[0][n] = '-';
ch[1][n] = ' ';
ch[2][n] = '-';
ch[3][n] = ' ';
ch[4][n++] = '-';
ch[0][n] = ' ';
ch[1][n] = ' ';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
break;
case 7:
ch[0][n] = ' ';
ch[1][n] = ' ';
ch[2][n] = ' ';
ch[3][n] = ' ';
ch[4][n++] = ' ';
ch[0][n] = '-';
ch[1][n] = ' ';
ch[2][n] = ' ';
ch[3][n] = ' ';
ch[4][n++] = ' ';
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
break;
case 8:
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
ch[0][n] = '-';
ch[1][n] = ' ';
ch[2][n] = '-';
ch[3][n] = ' ';
ch[4][n++] = '-';
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
break;
case 9:
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = ' ';
ch[4][n++] = ' ';
ch[0][n] = '-';
ch[1][n] = ' ';
ch[2][n] = '-';
ch[3][n] = ' ';
ch[4][n++] = '-';
ch[0][n] = ' ';
ch[1][n] = '|';
ch[2][n] = ' ';
ch[3][n] = '|';
ch[4][n++] = ' ';
break;
}
}
return n;
}
void print(vector <int> data)
{
char ch[5][10000];
int n = 0;
for (decltype(data.size())i = 0; i != data.size(); i++)
{
int tmp=getch(data[i], ch , n);
n = tmp;
}
ch[0][n] = '\0';
ch[1][n] = '\0';
ch[2][n] = '\0';
ch[3][n] = '\0';
ch[4][n] = '\0';
cout << ch[0] << endl;
cout << ch[1] << endl;
cout << ch[2] << endl;
cout << ch[3] << endl;
cout << ch[4] << endl;
}
int main()
{
int num;
while (cin >> num)
{
int i = 2;
vector <int> data;
while (num != 1)
{
if (num%i == 0)
{
data.push_back(i);
num /= i;
}
else {
i++;
}
}
print(data);
}
system("pause");
return 0;
}