C++实现输入两个整数y和h,且y<h<1000000。使每行输出一个数的分解,形如z=h1 * h2 * h3…(h1<=h2<=h3…,z也是从小到大的)
时间: 2024-01-21 18:18:59 浏览: 16
以下是用C++实现的代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
vector<int> primeFactors(int n) {
vector<int> factors;
for (int i = 2; i * i <= n; i++) {
while (n % i == 0) {
factors.push_back(i);
n /= i;
}
}
if (n > 1) factors.push_back(n);
return factors;
}
int main() {
int y, h;
cin >> y >> h;
for (int i = y + 1; i < h; i++) {
vector<int> factors = primeFactors(i);
cout << i << "=";
for (int j = 0; j < factors.size(); j++) {
if (j > 0) cout << "*";
cout << factors[j];
}
cout << endl;
}
return 0;
}
```
首先,我们定义一个函数`primeFactors`,该函数接受一个整数n作为参数,并返回n的所有质因子。我们使用类似于试除法的方法,从2开始遍历到sqrt(n),如果i是n的因子,则将i加入到factors中,并将n除以i,重复这个过程直到n变为1或者i * i > n。
在主函数中,我们输入y和h,并从y + 1开始遍历到h - 1,对于每个数i,我们调用`primeFactors`函数得到其所有质因子,然后按要求输出。具体地,我们先输出i的值,然后遍历factors数组,输出每个元素,同时在相邻元素之间输出一个'*'。最后,我们在每行输出结束时换行即可。