You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++质因数分解实现:如何将分解结果输出在同一行

质因数分解结果同行输出的解决方案

你希望质因数分解的结果能在同一行输出,比如:

392 = 2^3 * 7^2

但当前代码会在每次找到新的质因数时换行,输出变成:

392 = 2^3
392 = 7^2

现有代码

#include <iostream>

int main() {
  int n, dig, num, i, val;

  do {
    std::cout << "Enter a number greater than one: ";
    std::cin >> n;
  } while (n <= 1);

  i = 2;
  val = 0;
  num = n;

  do {
    dig = num % i;

    if (dig == 0) {
      do {
        num = num / i;
        dig = num % i;
        val = val + 1;
      } while (dig == 0);

      std::cout << n << " = " << i << "^" << val << std::endl;
    }

    val = 0;
    i = i + 1;
  } while (num != 1);

  return 0;
}

修改后的代码

#include <iostream>

int main() {
  int n, dig, num, i, val;
  bool first_factor = true; // 标记是否是第一个质因数

  do {
    std::cout << "Enter a number greater than one: ";
    std::cin >> n;
  } while (n <= 1);

  i = 2;
  val = 0;
  num = n;

  // 先打印开头的固定部分,只输出一次
  std::cout << n << " = ";

  do {
    dig = num % i;

    if (dig == 0) {
      do {
        num = num / i;
        dig = num % i;
        val = val + 1;
      } while (dig == 0);

      // 非第一个质因数前添加分隔符
      if (!first_factor) {
        std::cout << " * ";
      }
      // 打印当前质因数和指数
      std::cout << i << "^" << val;
      first_factor = false;
    }

    val = 0;
    i = i + 1;
  } while (num != 1);

  // 所有质因数输出完成后再换行
  std::cout << std::endl;

  return 0;
}

修改说明

  1. 提取固定前缀:把n = 移到循环外部,避免每次找到质因数都重复输出整行前缀。
  2. 控制分隔符:用布尔变量标记第一个质因数,第一个因数前不加分隔符,后续每个因数前添加*来连接。
  3. 调整换行时机:移除原代码中每次打印后的换行,改为所有因数输出完毕后统一换行,保证结果在同一行。

内容的提问来源于stack exchange,提问作者MattexD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:52:43