• JDOJ 1140: 完数


    JDOJ 1140: 完数

    题目传送门

    Description

    一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:

    Input

    N

    Output

    ? its factors are ? ? ?

    Sample Input

    1000

    Sample Output

    6 its factors are 1 2 3 28 its factors are 1 2 4 7 14 496 its factors are 1 2 4 8 16 31 62 124 248

    题解:

    一道很简单的模拟,涉及到的基础操作是判断质数和质因数分解。

    可以这样想,完数需要满足两个条件,第一,有着一堆质因子,第二,质因子相加等于原数。

    所以我们就可以得出思路:分别维护质因子序列(开数组),并且把每次分解出来的质因子相加,如果等于(符合条件),就可以输出。

    注意,卡格式是JDOJ的光荣传统,所以我们最后一定要加格式特判。

    代码:

    #include<cstdio>
    #include<cmath>
    #include<iostream>
    #include<cstring>
    using namespace std;
    int main()
    {
        int n;
        cin>>n;
        int tmp;
        int ram[10001];
        int cnt;
        for(int i=1;i<=n;i++)
        {
            cnt=0;
            tmp=0;
            for(int j=1;j<=i/2;j++)
                if(i%j==0)
                {
                    ram[++cnt]=j;
                    tmp+=j;
                }
            if(tmp==i)
            {
                printf("%d its factors are ",i);
                for(int j=1;j<=cnt;j++)
                    printf("%d ",ram[j]);
                cout<<endl;
            }
        }
        return 0;
    }
    
  • 相关阅读:
    贪吃蛇大作战游戏攻略
    非对称加密算法RSA
    使用java库中的对称加密算法
    HMAC加密的消息摘要码
    md5和SHA校验码
    拼图可解的充要条件
    Base64编码
    java中文文档官方下载
    JAVA中对字符串的常见处理函数汇总
    测试工程师面试题
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11294003.html
Copyright © 2020-2023  润新知