A1059 primefactors

#include<cstdio>
const int maxn=10010;//數組不能設定得太大,否則會超時!
struct factor{//牛客滿分要改爲12000000,然而這樣會使官網超時! 
	int x=0,count=0; 
}c[15];
int prime[maxn]={0};//素數表
bool p[maxn]={0};//是素數則爲0,不是則爲1;
int num=0;
void find_prime(int n){   //篩選法打印n以內的素數表!!! 
	for(int i=2;i<maxn;i++){
		if(p[i]==false&&i<n){
			prime[num++]=i;
			if(i>=n) break;
			for(int j=i+i;j<maxn;j+=i){  //數組不能設定得太大,否則會超時! 
				p[j]=true;
			}
		}
	}
} 

int main(){
	int m,n;
	int shu=0;
	scanf("%d",&n);//打印n的質因子;
	m=n; 
	find_prime(n);
	for(int i=0;i<num;i++){
		while(n%prime[i]==0){
			c[shu].x=prime[i];
			c[shu].count++;
			n/=prime[i];
		}
		if(c[shu].count!=0) shu++;
	} 
	if(n==m){c[shu].x=m;c[shu++].count++;}
	
	printf("%d=",m);
	for(int i=0;i<shu;i++){
		printf("%d",c[i].x);
		if(c[i].count!=1) printf("^%d",c[i].count);
		if(i!=shu-1) printf("*");
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章