【多重循环】 判断完数

题目描述

一个数如果恰好等于它的因子之和,这个数称为“完数”,如6的因子为 1,2,3,而1+2+3=6,因此6就是完数 提示: 判断一个数是否是完数,用穷举法:从1~n/2+1 逐个判断是否整除,如果整除则累加 如果累加结果与n 相等,则输出完数n; 如果完数个数为0,则输出NO 类似问题可以做1111号题目

输入

输入一个整数n(0 < n <=1000)

输出

输出2到n间的所有完数。注:如果有多个,输出在同一行,用空格隔开,如果没有,输出“NO” 。如:输入3 ,输出:NO ;输入8 ,输出:6;输入30,输出:6 28。

样例输入

30

样例输出

6 28

#include<stdio.h>
int main()
{
    int n,i,j,tem=0,c=0;
    scanf("%d",&n);
for(i=1;i<=n;i++)//控制从1找到n 
{
        for(j=1,tem=0;j<i;j++)
        {
             
            if(i%j==0)//带入6试试6/1==06/2==06/3==26/4!=0
            {
                tem+=j;//tem=1;tem=3 tem=6 
            }
             
        }
    if(tem==i)
            {
            printf("%d ",i);
                c++;
            }
}
    if(c==0)
        {
            printf("NO\n");
        }
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值