360 笔试题 因子计算器的实现

要求:输入一个数,输出它的因子相乘形式。如10

输出

 -   - 
  | |
 - * -
|     |
 -  -

笔试的时候不知道是要求把这些都打印出来,还是计算出因子就OK,反正我打印出来了。也没调试完就交卷了。打印出来有点蠢蠢的。

代码如下:


#include
#include
#include
#include
using namespace std;

bool isPrime(int n)
{
	if(n<=1) return false;
	if(n==2||n==3||n==5) return true;
	for(int i=2;i<=n/2;i++)
	{
		if(n%i==0) return false;
	}
	return true;
}
vector Prime(int n)
{
	vector res;
	if(isPrime(n))
		res.push_back(n);
	else
	{
		int ttt=n;
			for(int i=2;i<=n;i++)
	   {
		    if((n%i==0)&&isPrime(i))
			{
				 res.push_back(i);
				 n=n/i;
				 i=1;
			}
			  
	    }
	}
	return res;
}
vector> PrintDigit(int n)
{
	vector> ch;
	vector temp(3,' ');
	for(int i=0;i<5;i++)
		ch.push_back(temp);
	    ch[0][0]=' ';
		ch[0][1]='-';
		ch[0][2]=' ';
		ch[1][0]='|';
		ch[1][1]=' ';
		ch[1][2]='|';
		ch[2][0]=' ';
		ch[2][1]=' ';
		ch[2][2]=' ';
		ch[3][0]='|';
		ch[3][1]=' ';
		ch[3][2]='|';
		ch[4][0]=' ';
		ch[4][1]='-';
		ch[4][2]=' ';
	if(n==0)
	{
		return ch; 
	}
	else if(n==1)
	{
		ch[0][0]=' ';
		ch[0][1]=' ';
		ch[0][2]=' ';
		ch[1][0]=' ';
		ch[1][1]=' ';
		ch[2][0]=' ';
		ch[2][1]=' ';
		ch[2][2]=' ';
		ch[3][0]=' ';
		ch[3][1]=' ';
		ch[4][0]=' ';
		ch[4][1]=' ';
		ch[4][2]=' ';
	}
	else if(n==2)
	{
		ch[1][0]=' ';
		ch[2][1]='-';
		ch[3][2]=' ';
	}
	else if(n==3)
	{
		ch[1][0]=' ';
		ch[2][1]='-';
		ch[3][0]=' ';
	}
	else if(n==4)
	{
		ch[0][1]=' ';
		ch[2][1]='-';
		ch[3][0]=' ';
		ch[4][1]=' ';
	}
	else if(n==5)
	{
		ch[1][2]=' ';
		ch[2][1]='-';
		ch[3][0]=' ';
	}
	else if(n==6)
	{
		ch[1][2]=' ';
		ch[2][1]='-';
	}
	else if(n==7)
	{
		ch[1][0]=' ';
		ch[3][0]=' ';
		ch[4][1]=' ';
	}
	else if(n==8)
	{
		ch[2][1]='-';
	}
	else if(n==9)
	{
		ch[2][1]='-';
		ch[3][0]=' ';
	}
	else ;
	return ch;
}
void merge(vector>&a,vector>&b,int flag)
{
	if(a.size()==0) 
	{
		a=b;
		return;
	}
	if(flag==1)
	{
     for(int i=0;i<5;i++)
	{
		for(int j=0;j<3;j++)
			a[i].push_back(b[i][j]);
	}
	}
	else
	{
		 for(int i=0;i<5;i++)
	   {
		for(int j=0;j<1;j++)
		{
			if(i==2)
               a[i].push_back('*');
			else
				a[i].push_back(' ');
		}
	   }
	}
	
}
void Print(vectorprime)
{
	//sort(prime.begin(),prime.end());
	vector> res;
	for(int i=0;i bit_w;
		while(cur)
		{
			bit_w.push(cur%10);
			cur/=10;
		}
		vector> bit_ch;
		while(!bit_w.empty())
		{
			int temp=bit_w.top();
			bit_w.pop();
			bit_ch=PrintDigit(temp);
			merge(res,bit_ch,1);
		}
		if(i!=prime.size()-1)
		merge(res,bit_ch,0);
	}
	for(int i=0;i<5;i++)
	{
		for(int j=0;j>n;
	while(n)
	{
		if(n<0)
			break;
		vector pr=Prime(n);
		 Print(pr);
		 cin>>n;
	}
}


你可能感兴趣的:(360 笔试题 因子计算器的实现)