c++弄一个程序来判断一个数字是不是完全数

弄一个c++程序,首先输入一个数字,确认是不是完全数,并输出它可以被除的数字.比如,6是个完全数,并可以被1,2,3和6除。... 弄一个c++程序,首先输入一个数字,确认是不是完全数,并输出它可以被除的数字.比如,6是个完全数,并可以被1,2,3和6除。 展开
 我来答
xoaxa
推荐于2016-02-12 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3480万
展开全部

/*

6

6 = 1 + 2 + 3

28

28 = 1 + 2 + 4 + 7 + 14

1024

0

Press any key to continue

*/

#include <stdio.h>
#include <stdlib.h>

int main() {
int i,j,n,num,sum,a[16];
while(scanf("%d",&num) == 1 && num > 0) {
j = 0;
sum = 0;
for(n = 1; n <= num / 2; ++n) {
if(num % n == 0) {
sum += n;
a[j++] = n;
}
}
if(sum == num) {
printf("%d = ",num);
for(i = 0; i < j; ++i) {
if(i == j - 1) printf("%d",a[i]);
else printf("%d + ",a[i]);
}
printf("\n");
}
}
return 0;
}
追问
什么也不能显示!!!
追答

在1 -- 10000中,只有四个数是完美数:

6 = 1 + 2 + 3

28 = 1 + 2 + 4 + 7 + 14

496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248

8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064

如果你输入的不是这几个数,就不会显示任何信息。根据题目要求修改如下:

/*

8128

8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064

98

98不是完美数。

0

Press any key to continue

*/

#include <stdio.h>
#include <stdlib.h>

int main() {
int i,j,n,num,sum,a[300];
while(scanf("%d",&num) == 1 && num > 0) {
j = 0;
sum = 0;
for(n = 1; n <= num / 2; ++n) {
if(num % n == 0) {
sum += n;
a[j++] = n;
}
if(sum > num) break;
}
if(sum == num) {
printf("%d = ",num);
for(i = 0; i < j; ++i) {
if(i == j - 1) printf("%d",a[i]);
else printf("%d + ",a[i]);
}
printf("\n");
}
else printf("%d不是完美数。\n",num);
}
return 0;
}
仙戈雅3n
2014-01-25 · TA获得超过5790个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:898万
展开全部
// Try:
#include <iostream>
using namespace std;

bool IsPerfectNumber(int a[10],int target){
     int i,total,p_index;
 bool YN=false;
     total=p_index=0;

 for (i=1;i<target;i++)
 {
         if(target%i==0){
 a[p_index++]=i;
 total+=i;
 }
 if(total==target){
 YN=true;
 return YN;
 }
 }
 return YN;
}

int main(){

int a[10]={0};
int question;
cout<<"请输入一个数:";
    cin>>question;
    
    if(IsPerfectNumber(a,question)){
cout<<question<<"是完数,并可以被:";
for (int i=0;i<10&&a[i]!=0;i++) cout<<a[i]<<"、";
cout<<"\b除"<<endl;
}
else cout<<question<<"不是完数"<<endl;

return 1;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ZhaoYiC00
2014-01-25
知道答主
回答量:20
采纳率:0%
帮助的人:18.5万
展开全部
#include<iostream>
using namespace std;
void main()
{
int a,b=0,i;
cin>>a;
for(i=1;i<=a/2;i++)
if(a%i==0)b+=i;
if(a==b)
{
cout<<a<<"是完全数"<<endl;
for(i=1;i<=a/2;i++)
if(a%i==0)cout<<i<<" ";
cout<<a<<endl;
}
else cout<<a<<"不是完全数"<<endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式