题目描述
所谓因子分解,就是把给定的正整数a,分解成若干个素数的乘积,即 a = a1 × a2 × a3 × ... × an,并且 1 < a1 ≤ a2 ≤ a3 ≤ ... ≤ an。其中a1、a2、...、an均为素数。 先给出一个整数a,请输出分解后的因子。
输入描述:
输入包含多组数据,每组数据包含一个正整数a(2≤a≤1000000)。
输出描述:
对应每组数据,以“a = a1 * a2 * a3...”的形式输出因式分解后的结果。
输入例子:
10 18
输出例子:
10 = 2 * 5 18 = 2 * 3 * 3
先创建素数表,找出所有素数,然后分别除去这些素数。
#include<bits/stdc++.h>
using namespace std;
int prime[80010] = {0};
bool IsPrime(int n)
{
int i ;
double k = sqrt(n);
if(n==1) return false;
else
{
bool flag = true;
for(i = 2;i<=k;i++)
if(n%i==0) {
flag = false;
break;
}
return flag;
}
}
void CreatPrime()
{
int i , j = 0;
for(i = 2;i<=1000000;i++)
if(IsPrime(i)==true)
prime[j++] = i;
}
int main()
{
CreatPrime();
int n ,i;
while(cin >> n)
{
cout << n << " = " ;
vector<int> a;
for(i = 0;i<80000;)
{
if(n%prime[i]==0)
{
a.push_back(prime[i]);
n/=prime[i];
if(n==1) break;
}
else i++;
}
for(i = 0;i<a.size()-1;i++)
cout << a[i] << " * ";
cout << a[a.size()-1] << endl;
}
return 0;
}