如何在没有多余整数的情况下填充整数之间的分隔符



我正在尝试获取正整数的因子。我想要的是8 = 2*2*2。然而,我得到的是*2*2*2。如何乘坐第一辆*?有没有一种标准的方法来更好地描述这种情况?

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    int num, i = 2;
    const char separator  = '*';
    cout << "Input a positive integer: ";
    cin >> num;
    while(num !=1){
        while((num % i) != 0){
            i++;
        }
        cout << setw(2) << setfill(separator) << i;
        num = num/i;
    }
}

输入一个正整数:8

*2*2*2

使用已更新的分隔符。从""开始,然后设置为"*"

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    int num, i = 2;
    const char *separator  = "";
    cout << "Input a positive integer: ";
    cin >> num;
    do {
        while((num % i) != 0){
            i++;
        }
        cout << separator << i;
        separator  = "*";
        num = num/i;
    } while (num > 1);
}

还更改为do循环,以处理在OP的原始代码中不打印任何内容的num == 1num == 0。代码可以使用unsigned作为进一步的扩展/保护。

实现这一点的一种方法是仅在num不等于1时输出setfill(分隔符)。

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    int num, i = 2;
    const char separator  = '*';
    cout << "Input a positive integer: ";
    cin >> num;
    while(num !=1){
        while((num % i) != 0){
            i++;
        }
        cout << setw(2) << i;
        num = num/i;
        if (num != 1)
            cout << setfill(separator);
    }
}

相关内容

最新更新