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

2025-03-21 06:50:35
推荐回答(3个)
回答1:

/*

6

6 = 1 + 2 + 3

28

28 = 1 + 2 + 4 + 7 + 14

1024

0

Press any key to continue

*/

#include 
#include 

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;
}

回答2:

// Try:
#include 
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  {
         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< for (int i=0;i<10&&a[i]!=0;i++) cout< cout<<"\b除"< }
else cout<
return 1;
}

回答3:

#include
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< for(i=1;i<=a/2;i++)
if(a%i==0)cout< cout< }
else cout<}