問題描述
求出區間[a,b]中所有整數的質因數分解。
輸入格式
輸入兩個整數a,b。
輸出格式
每行輸出一個數的分解,形如k=a1 * a2 * a3…(a1<=a2<=a3…,k也是從小到大的)
程序清單
#include <iostream>
#include <math.h>
using namespace std;
bool isPrime(int num) //判斷是否爲素數
{
for(int i=2; i<=sqrt(num); i++)
{
if(num%i==0)
return false;
}
return true;
}
int main()
{
int a=0,b=0,j=0,k=0;
cin>>a>>b;
for(int i=a; i<=b; i++) // 計算[a,b]中所有數的質因數分解
{
cout<<i<<"=";
j=i;
k=2;
while(!isPrime(j)) //若j是否爲質數,若是質數,則可繼續分解因數
{
if(j%k==0) //若能被k整除,則k爲一個因數
{
cout<<k;
j=j/k;
if(j!=1)
cout<<"*";
}
else
k++;
}
cout<<j<<endl;
}
return 0;
}
測試結果
輸入:2、10。即測數2到10的分解質因數