zoukankan      html  css  js  c++  java
  • 问题 A: 完数

    问题 A: 完数

    时间限制: 1 Sec  内存限制: 32 MB
    提交: 252  解决: 178
    [提交][状态][讨论版][命题人:外部导入]

    题目描述

        求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。

    输入

        测试数据有多组,输入n,n数据范围不大。

    输出

        对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。

    样例输入

    6

    样例输出

    6



    #include<bits/stdc++.h>
     
    using namespace std;
    const int N=1e4+10;
    int p[N];
    int cnt=0;
    void solve()//筛选那些是完数
    {
        //cout<<"fssfdaf"<<endl;
        for(int i=2;i<N;i++){
            //cout<<"110"<<endl;
            int sum=0;
            for(int j=1;j<=sqrt(i);j++){
                if(i%j==0){
                    sum+=j+i/j;
                }
            }
            if(sum==2*i) p[cnt++]=i;//这里是2倍 因为加的时候慧多加个i
        }
    }
    int main()
    {
        int n;
        solve();
        while(scanf("%d",&n)==1){
            int flag=0;
            for(int i=0;i<=n&&p[i]<=n;i++){
                flag++;
            }
            for(int i=0;i<flag;i++){
                if(i) printf(" ");
                printf("%d",p[i]);
            }
            printf("
    ");
        }
     
        return 0;
    }
  • 相关阅读:
    队列安排
    杂物
    最大数
    牛券
    斐波那契数列 !有疑惑
    方格取数
    阶乘之和-魏国
    过河卒
    二分查找算法(转)
    求整数的二进制表示中1的个数 (转)
  • 原文地址:https://www.cnblogs.com/chenchen-12/p/10154869.html
Copyright © 2011-2022 走看看