我正在尝试获取正整数的因子。我想要的是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;
}
}
Input a positive integer: 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
循环以应对num == 1
和num == 0
,它们在OP的原始代码中不打印任何内容。代码可以使用unsigned
作为进一步的扩展/保护。
关于c++ - 如何填充整数之间的分隔符而没有多余的分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34735093/