1210: 인자 분해

1210: 인자 분해 시간 제한: 1000ms 메모리 제한: 65536KB [제목 설명] 하나의 수를 입력하여 그 소인자 분해 표현식을 출력합니다.[입력] 정수 n(2≤n<100)을 입력합니다.[출력] 이 정수의 인자 분해 표현식을 출력합니다.표현식에서 각 소수는 작은 것에서 큰 것으로 배열된다.만약 이 정수가 인자 a의 b차방을 분해할 수 있다면 b가 1보다 크면 a^b로 쓴다.b가 1이면 바로 a로 쓴다.[샘플 입력] 60 [출력 샘플] 2^2*3*5 [출처] No
// 
#include
#include 
#include
#include
using namespace std;
int main()
{
	int a,b=0,n,i;
	scanf("%d",&a);
	n=a;
	for(i=2;i<=a;i++){
		int m=0;
		if(n%i==0){
			if(b==0) b=1;
			else printf("*");
			printf("%d",i);
			while(n%i==0){n/=i;m++;}
			if(m>1) printf("^%d",m);
		} 
		if(i>=n||n==1) break;
	}	
	return 0;
 } 
// 
#include
#include 
#include
#include
using namespace std;
int s[101];
void f(int x,int y)
{
	if(x==0||y>x) return;
	else{
		while(x%y==0){
			x/=y;
			s[y]++;
		}
		f(x,y+1);
	}
}
int main()
{
	int n;
	scanf("%d",&n);
	f(n,2);
	int bl=0;
	for(int i=2;i<=100;i++){
		if(bl==1&&s[i]!=0) printf("*");
		if(s[i]!=0) bl=1;
		if(s[i]==1) printf("%d",i);
		else if (s[i]>1) printf("%d^%d",i,s[i]);
	}	
	return 0;
 } 

좋은 웹페이지 즐겨찾기