问题描述
求出区间[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的分解质因数