求出区间[a,b]中所有整数的质因数分解。
输入格式:
输入两个整数a,b。数据规模和约定 2<=a<=b<=10000
输出格式:
每行输出一个数的分解,形如k=a1a2a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)
输入样例:
在这里给出一组输入。例如:
3 10
输出样例:
在这里给出相应的输出。例如:
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
#include<iostream>
using namespace std;
void P(int a);
int IsPrime(int a);
int main()
{
int a, b;
cin >> a >> b;
int c = b - a + 1;
while (c--) {
cout << a << "=" ;
P(a++);
cout << endl;
}
return 0;
}
int IsPrime(int a)
{
int i;
for (i = 2; i < a; i++)
if (a % i == 0)
return 0;
return 1;
}
void P(int a)
{
int i;
if (IsPrime(a))
{
cout<<a;
return;
}
else
{
for (i = 2; i < a; i++)
{
if (a % i == 0)
{
cout << i << "*";
P(a / i);
break;//递归的break
}
}
}
}
思路:
模拟下质因数分解,让一个数字不断除以小的素数,
直到商为素数的时候停止.