牛客网———完数VS盈数

题目描述

一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈数”。 求出2到60之间所有“完数”和“盈数”。

输入描述:

题目没有任何输入。

输出描述:

输出2到60之间所有“完数”和“盈数”,并以如下形式输出:
E: e1 e2 e3 ......(ei为完数)
G: g1 g2 g3 ......(gi为盈数)
其中两个数之间要有空格,行尾不加空格。
链接:https://www.nowcoder.com/questionTerminal/ccc3d1e78014486fb7eed3c50e05c99d
来源:牛客网

#include<stdio.h>
#include<math.h>
int judge(int n)
{
    int i;
    int num=0;
    for(i=1;i<n;i++)
    {
        if(n%i==0)
            num+=i;
    }
    if(num==n) return 1;
    else if(num>n)  return 2;
    else return 0;
}
 
int main()
{
    int i,k;
    int a[60];
    int r=0,t=59;
    for(i=2;i<=60;i++)
    {
        k=judge(i);
        if(k==1)
            a[r++]=i;
        if(k==2)
            a[t--]=i;
    }
    printf("E:");
    for(i=0;i<r;i++)
        printf(" %d",a[i]);
    printf("\nG:");
    for(i=59;i>t;i--)
        printf(" %d",a[i]);
    return 0;
}

 

posted @ 2018-12-10 20:35  JAYPARK01  阅读(255)  评论(0编辑  收藏  举报