c++写一个简单的程序不使用vector实现如下功能。给定任意一个整数判断是否是正整数如果是正整数则要求打印所有可能的乘积因子乘积因子从小到大排列重复的因子情况不打印比如打印了124则不打印241。比如给定 24 则打印:12421238462262342223注:如果打印了2223则不打印 2232 等因子重复情况。并绘制流程表
#include<iostream>
using namespace std;
void printFactors(int n, int current, string factors) {
// 判断是否是正整数
if (n <= 0) {
return;
}
// 打印乘积因子
if (n == 1) {
cout << factors << endl;
return;
}
// 递归寻找乘积因子
for (int i = current; i <= n; i++) {
if (n % i == 0) {
if (factors == "") {
printFactors(n / i, i, factors + to_string(i));
} else {
printFactors(n / i, i, factors + "*" + to_string(i));
}
}
}
}
int main() {
int num;
cout << "请输入一个整数:";
cin >> num;
cout << "所有可能的乘积因子如下:" << endl;
printFactors(num, 2, "");
return 0;
}
流程表:
| 步骤 | 说明 | 输入 | 输出 | 备注 | | :--: | :----------: | :-------: | :----------: | :----------: | | 1 | 输出提示 | | | | | 2 | 读取输入 | | num | | | 3 | 输出乘积因子 | num | "所有可能的乘积因子如下:" | | | 4 | 调用函数 | num, 2, "" | | | | 5 | 判断是否是正整数 | n | | 如果n <= 0,则返回 | | 6 | 打印乘积因子 | n | | 如果n == 1,则打印factors | | 7 | 递归寻找乘积因子 | n/i, i, factors + "*" + to_string(i) | | 循环i从current到n,如果n能整除i,则递归调用printFactors | | 8 | 输出结果 | | |
原文地址: https://www.cveoy.top/t/topic/hPfz 著作权归作者所有。请勿转载和采集!