poj 1365

整数因子分解。

#include<iostream>
#include<fstream>
#include<cmath>

using namespace std;

int n;
int a[32810];

void read(){
//	ifstream cin("in.txt");
	int i,j,k;
	char c[1000];
	a[1]=1;
	for(i=4;i<=32800;i+=2)
		a[i]=1;
	for(i=3;i<=32800;i+=2)
		if(a[i]==0)
			for(j=2*i;j<=32800;j+=i)
				a[j]=1;

	while(gets(c)){
		n=1;
		if(c[0]=='0')
			return;
		for(i=0;i<strlen(c);)
		{
			j=0;
			while(c[i]!=' ')
			{
				j=j*10+c[i]-'0';
				i++;
			}
			 i++;
			int s=0;
			while(c[i]!=' '&&i<strlen(c))
			{
				s=s*10+c[i]-'0';
				i++;
			}
			 i++;
			n=n*pow(1.*j,s);
		}
		n--;
		while(n!=1)
		{
			for(i=n;;i--)
				if(a[i]==0&&n%i==0)
					break;
			j=0;
			while(n%i==0){
				n/=i;
				j++;
			}
			cout<<i<<' '<<j<<' ';
		}
		cout<<endl;
	}
}	

int main(){
	read();
	return 0;
}

posted on 2011-03-29 14:35  宇宙吾心  阅读(310)  评论(0)    收藏  举报

导航