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; }