2020-11-8上机:问题求解:完数

/*
*Copyright (c)2020,CSDN学院
*All rights reserved.
*文件名称:main.c
*作    者:李先声
*完成日期:2020年8月25日
*版 本 号:v1.0
*问题描述:数字游戏
【项目1-完数】
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数。
(1)输入一个数n,判断n是否是完数
(2)输出1000以内的所有完数
(3)亲密数:如果整数A的全部因子(包括1,不包括A本身)之和等于B;
且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。
求3000以内的全部亲密数。
(提示:按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,
再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。)
*/

(1)输入一个数n,判断n是否是完数

#include <stdio.h>

int main( )

{
    int i,n,num=0,remainder;

    printf("请输入任意大于1的自然数n:");

    scanf("%d",&n);

    for(i=1;i<n;i++)
    {
        remainder=n%i;

        if(remainder==0)
        {
            num=num+i;
        }

    }
    if(num==n)
    {
        printf("%d是完数。",n);
    }
    else
    {
        printf("%d不是完数。",n);
    }


    return 0;

}

 (2)输出1000以内的所有完数

#include <stdio.h>

int main( )

{
    int i,n,num,remainder;

    printf("1000以内的完数包括:");

    for(n=2;n<=1000;n++)
    {
        num=0;

        for(i=1;i<n;i++)
            {
                remainder=n%i;

                if(remainder==0)
                {
                    num=num+i;
                }

            }
        if(num==n)
        {

            printf("%d\t",n);


        }

    }

    return 0;

}

(3)亲密数:如果整数A的全部因子(包括1,不包括A本身)之和等于B;
且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。
求3000以内的全部亲密数。

#include <stdio.h>

int main( )

{
    int a,b,i,j,n,remainder1,remainder2;

    printf("3000以内的全部亲密数包括:\n");

    for(a=2;a<=3000;a++)
    {
        b=0;

        for(i=1;i<a;i++)
            {
                remainder1=a%i;

                if(remainder1==0)
                {
                    b=b+i;
                }

            }

        n=0;

        for(j=1;j<b;j++)
            {
                remainder2=b%j;

                if(remainder2==0)
                {
                    n=n+j;
                }

            }

        if(n==a)
        {

            printf("a=%d和b=%d为亲密数\n",a,b);

        }


    }

    return 0;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值