1. 程式人生 > >質因子分解

質因子分解

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<cmath>
using namespace std;
int n,m;
//int p[10000005];
//bool flag[10000005];
//int cnt=0;
int sum[3000];
//bool is_prime(int x)
//{
//    for(int i=2;i<=n;i++)
//    {
//    	if(!flag[i]) p[cnt++]=i;
//    	for(int j=0;j<cnt&&i*p[j]<=n;j++)
// { // flag[i*p[j]]=1; // if(i%p[j]==0) break; // } // } // int l=0,r=cnt-1; // while(l<r) // { // int mid=(l+r)>>1; // if(a<=p[mid]) r=mid; // else l=mid+1; // } // if(p[l]==x) return 1; // return 0; //} bool is_prime(int x) { if(x==1) return 0; if(x==2 || x==3) return
1; if(x%6!=1&&x%6!=5) return 0; for(int i=5;i<=sqrt(x);i+=6) { if((x%i==0&&x!=i) || (x%(i+2)==0&&x!=(i+2))) return 0; } return 1; } int main() { cin>>n; m=n; for(int i=1;i<=n;i++) { while((m%i==0) && is_prime(i)) { sum[i]++;
m=m/i; } } for(int i=1;i<=n;i++) { if(sum[i]!=0) cout<<i<<' '<<sum[i]<<endl; } }