前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个数如果恰好等于它的因子之和,这个数就称为“完数“。例如6=1+2+3.编程找出1000以内的所有完数

一个数如果恰好等于它的因子之和,这个数就称为“完数“。例如6=1+2+3.编程找出1000以内的所有完数

作者头像
川川菜鸟
发布2021-10-18 16:40:40
2.1K0
发布2021-10-18 16:40:40
举报
代码语言:javascript
复制
//题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数
#include
#define N 1000
int main()
{
    int i,j,k,n,sum;
    int a[256];
    printf("以下是所有1000以内的完数:\n");
    for(i=2;i<=N;i++)
    {
        sum=a[0]=1;//给第一个数字为1 
        k=0;
        for(j=2;j<=(i/2);j++)
        {
            if(i%j==0)
            {
                sum+=j;//sum为质数和 ,j就是质数 
                a[++k]=j;//注意这里先++保证质数赋值给a[1]开始,把质数存储到数组中 
            }
            
        }
        //对于2到1000内的所有数子,只要满足这个数字等于他的质数和就执行以下语句 
        if(i==sum)
        {
            printf("%d=",i);
            for(n=0;n<=k;n++)
                printf("+%d",a[n]);
            printf("\n");
        }
        
    }
    return 0;
}

//
//#include
//
//int main()
//{
//	int i, j, sum;      /* i表示要判断的数,j表示因子,sum表示因子之和*/ 
//
//	for (i = 2; i <= 1000; i++)
//	{
//		sum = 1;
//		for (j = 2; j <= i / 2; j++)
//			if (i%j == 0)         /* 判断i能否被j整除,能的话j即为因子  因子不包括自身 */ 
//				sum += j;
//
//		if (sum == i)    /* 判断此数是否等于因子之和 */ 
//		{
//			printf("%d=, ", i);    /* 输出该数 */ 
//
//			for (j = 2; j <= i / 2; j++)
//				if (i%j == 0)printf("%d+ ", j);    /* 输出因子 */ 
//
//			printf("\n");
//		}
//	}
//
//	return 0;
//}

测试:

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档