南沙信奥老师解一本通题:1210:因子分解

 【题目描述】

输入一个数,输出其素因子分解表达式。

【输入】

输入一个整数 n (2≤n<100)。

【输出】

输出该整数的因子分解表达式。

表达式中各个素数从小到大排列。

如果该整数可以分解出因子a的b次方,当b大于11时,写做 a^b ;当b等于1时,则直接写成a。

【输入样例】

60

【输出样例】

2^2*3*5
#include <bits/stdc++.h>
using namespace std;
int a[1000];//类似桶原理 
void factor(int n, int i)
{
	if(n<=1)
		return;
    if(n%i==0)
    {
    	a[i]++;
    	factor(n/i,i);
	}
	else
		factor(n,i+1);
}
 int main()
 {
    int n;
    cin>>n;
    bool isfirst=true;
    memset(a,0,sizeof(a));
    factor(n,2);
    for(int i=0;i<1000;i++)
    {
    	if(a[i]>=1)
    	{
    		if(isfirst)
    			isfirst=false;
    		else
				cout<<"*";
			if(a[i]>=2)
    			cout<<i<<"^"<<a[i];
    		else
				cout<<i;			
		}
	}
    return 0; 
 }

 

posted @ 2024-09-11 06:25  信奥赛老师  阅读(152)  评论(0)    收藏  举报