我正在尝试获取正整数的因子。我想要的是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 == 1
和num == 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);
}
}