xiaoyan231 2021-10-28 13:34 采纳率: 80%
浏览 54
已结题

能顺便讲解一下寻找完美数的方法吗

选做:完美数
题面描述:
魔法世界有一个毕达哥拉斯学派,他们把一个数称为“完美数”,如果该数恰好等于它的因子之和。他们认为完美数具有神奇的魔力。如6的因子为1、2、3,而 6=1+2+3,因此6是“完美数”。创始人毕达哥拉斯说:“6象征着完满的婚姻以及健康和美丽,因为它的部分是完整的,并且其和等于自身。”
请找出给定范围中的完美数。

输入:
两个正整数m和n,以空格间隔,为指定的范围(包括m和n,m和n均不超过100000)。

输出:
在单行中输出给定范围内的所有完美数,每个完美数占一行。每个完美数的后面为一个冒号,然后由小到大输出它的因子,每个因子之后跟着一个空格,最后换行。

示例输入:
1 6

示例输出:
1: 1
6: 1 2 3

  • 写回答

1条回答 默认 最新

  • -Undefined_ 2021-10-28 13:44
    关注

    判断n是不是完美数:从1到n-1,看看这些数是不是n的因子,即能否被n整除,如果是因子的话,就统计一下和保存到s里,如果最后s==n,那么n就是完美数。

    #include<stdio.h>
    int main() {
        int m,n,s=0,f,i,j;
        scanf("%d %d",&m,&n);
        if(m>n) {
            int t=m;
            m=n;
            n=t;
        }
        for(i=m; i<=n; i++) {
            s=1;
            for(j=2; j<i; j++) {
                if(i%j==0) {
                    s+=j;
                }
            }
            if(s==i) {
                printf("%d:",i);
                if(i==1)printf("1\n");
                else {
                    for(j=1; j<i; j++) {
                        if(i%j==0) {
                            printf("%d ",j);
                        }
                    }
                    printf("\n");
                }
            }
        }
        return 0;
    }
    

    觉得有用的话采纳一下哈

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月16日
  • 已采纳回答 11月8日
  • 创建了问题 10月28日

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程