#include<iostream>
#include<string> //有string类
#include <sstream> //有stringstream类
using namespace std;
/**
* 如果一个数恰好等于它的因子之和,则称该数为“完全数”。
* 各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和
* 等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。
* 例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
* 第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
*/
bool ifWholeNumber(int inputNumber);
void ouputExpression(int inputNumber);
string intToString(int number);
int main(){
int s;
cout<<"请输入一个数字:"<<endl;
cin>>s;
ouputExpression(s);
return 0;//1一般是发生异常的返回值
}
//是否是完数
bool ifWholeNumber(int inputNumber){
bool flag = false;
int m = 1;
for (int i = 2; i <= inputNumber; i++) {
if(inputNumber % i == 0){ //是它的一个因子
if(i != inputNumber){
m = m + i;
}
}
}
if(m == inputNumber){ //因子和等于输入的数字,是完数
return true;
}else{
return flag;
}
}
//是完数,输出表达式
void ouputExpression(int inputNumber){
bool flag = ifWholeNumber(inputNumber);
if(flag){
string result = intToString(inputNumber)+"= 1+";
for (int i = 2; i <= inputNumber; i++) {
if(inputNumber % i == 0){ //是它的一个因子
if(i != inputNumber){
//result = result + i +"+";
result.append(intToString(i));
result.append("+");
}
}
}
cout<<result.substr(0,result.length()-1)<<endl;
}else{
cout<<"输入的数字不是完数"<<endl;
}
}
//int转换成字符串
string intToString(int number){
stringstream ss;
ss<<number;
string s;
ss>>s;
return s;
}
#include<string> //有string类
#include <sstream> //有stringstream类
using namespace std;
/**
* 如果一个数恰好等于它的因子之和,则称该数为“完全数”。
* 各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和
* 等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。
* 例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
* 第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
*/
bool ifWholeNumber(int inputNumber);
void ouputExpression(int inputNumber);
string intToString(int number);
int main(){
int s;
cout<<"请输入一个数字:"<<endl;
cin>>s;
ouputExpression(s);
return 0;//1一般是发生异常的返回值
}
//是否是完数
bool ifWholeNumber(int inputNumber){
bool flag = false;
int m = 1;
for (int i = 2; i <= inputNumber; i++) {
if(inputNumber % i == 0){ //是它的一个因子
if(i != inputNumber){
m = m + i;
}
}
}
if(m == inputNumber){ //因子和等于输入的数字,是完数
return true;
}else{
return flag;
}
}
//是完数,输出表达式
void ouputExpression(int inputNumber){
bool flag = ifWholeNumber(inputNumber);
if(flag){
string result = intToString(inputNumber)+"= 1+";
for (int i = 2; i <= inputNumber; i++) {
if(inputNumber % i == 0){ //是它的一个因子
if(i != inputNumber){
//result = result + i +"+";
result.append(intToString(i));
result.append("+");
}
}
}
cout<<result.substr(0,result.length()-1)<<endl;
}else{
cout<<"输入的数字不是完数"<<endl;
}
}
//int转换成字符串
string intToString(int number){
stringstream ss;
ss<<number;
string s;
ss>>s;
return s;
}