完美数是等于其所有(非自我)的除数之和的数字。以6为例:
6 = 1 + 2 + 3
一个等于其所有真因数之和的数字 —— 只要其中一个是负数 —— 并不十分完美,但令人钦佩。
举例而言, 12 的正确除数是 12346总计 16。但是,如果 2 为负数,则总数为 12,即数字本身。因此,12 是一个令人钦佩的数字。
12 = 1 - 2 + 3 + 4 + 6创建一个将数字 n 作为输入的函数。如果 n 是完美的,返回 "Perfect"。
如果 n 是令人钦佩的,则返回必须呈现负数的正确除数以使正确除数的总和等于 n。如果n既不完美也不令人钦佩,则返回 "Neither"。
求解答怎么用C++写这
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- 快乐鹦鹉 2023-03-16 15:44关注
先求出所有因子及其总和,如果总和减去某个因子的两倍的结果等于这个数,就Perfect了
#include <iostream> using namespace std; int perfect(int n) { int *y = new int[n/2]; int i,count = 0,sum=0,res=-1; for(i=1;i<=n/2;i++) { if(n%i==0) { y[count++] = i; sum += i; } } if(sum == n) { delete []y; return 0; } for(i=0;i<count;i++) { if(sum - y[i]*2 == n) { res = y[i]; break; } } delete []y; return res; } int main() { int n; cin>>n; int r = perfect(n); if(r==0) cout<<"Perfect"<<endl; else if(r == -1) cout<<"Neither"<<endl; else cout<<<<r<<endl; system("pause"); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥20 cad图纸,chx-3六轴码垛机器人
- ¥15 移动摄像头专网需要解vlan
- ¥15 对于这个问题的算法代码
- ¥20 access多表提取相同字段数据并合并
- ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
- ¥20 Java-Oj-桌布的计算
- ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
- ¥20 有人知道这种图怎么画吗?
- ¥15 pyqt6如何引用qrc文件加载里面的的资源
- ¥15 安卓JNI项目使用lua上的问题