ZHAO_ZI_YUAN 2022-03-19 00:31 采纳率: 100%
浏览 250
已结题

一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:

问题遇到的现象和发生背景

一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1 2 3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:“

问题 无输出

问题相关代码,请勿粘贴截图
#include<iostream>
using namespace std;
int main()
{
    int N;
    int sum=0;
    cin>>N;
for(int a=1;a<=N;a++) 
{
    for(int b=1;b<=a/2;b++)
    {
        if(a%b==0)
        sum+=b;
        if(sum==a)
        {
            cout<<a<<" its factors are ";
         for(b=1;b<=a/2;b++)
           {
               if(a%b==0)
               cout<<b<<" ";
           }
           cout<<endl;
        }   
    }
}
return 0;
}


###### 运行结果及报错内容
无输出
  • 写回答

2条回答 默认 最新

  • .柚不幼.love. 2022-03-19 19:35
    关注
    
    #include<stdio.h>
    int main(){
        int n,i,fator,sum;//n表示题目中N以内的数,判断i是不是完数,fator是因子,sum是因子fator的和
        scanf("%d",&n);//输入N,查找N以内的所有完数
        for(i=2;i<=n;i++){
            sum=1;//1是所有数的因子,所以sum初始值为1
            for(fator=2;fator<=i/2;fator++){//找到数i的所有因子fator并求和得到sum
                if(i%fator == 0) 
                    sum+=fator; 
            }
            if(sum == i){//如果sum和i相等,说明i是完数
            printf("%d its fastors are 1",i );
            for(fator=2;fator<=i/2;fator++){//循环输出所有因子
                if(i%fator == 0)
                    printf(" %d",fator);//满足题目中【最后一个数字后面没有多余的空格】
            }
            printf("\n");
        }    
        }
        return 0;
    }
    
    
    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 专家已采纳回答 3月22日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 数学建模数学建模需要