zoukankan      html  css  js  c++  java
  • C语言编程练习63:完数

    题目描述

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

    输入

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

    输出

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

    样例输入

    6

    样例输出

    6
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<cmath>
    #include<iostream>
    using namespace std;
    
    int ans[100];//存完数
    
    int main()
    {
        int n;
        int t;//记录完数的个数
        int sum;//因数的和
        while(cin>>n)
        {
            for(int m=2;m<=n;m++)
            {
                t=0;
                sum=0;
                for(int i=1;i<=(int)sqrt(m);i++)
                {
                    if(m%i==0)
                    {
                        if(i==m/i)
                        {
                            sum=sum+i;
                        }
                        if(i!=m/i)
                        {
                            sum=sum+i+m/i;
                        }
                    
                    }
                }
                if(sum==m*2)//加的时候会多加一次m,所以乘2(当i=1时,m/i=m)
                {
                    ans[t]=m;
                    t++;
                }
                if(t!=0)
                {
                    for(int k=0;k<t-1;t++)
                    {
                        cout<<ans[k]<<' ';
                    }
                    cout<<ans[t-1]<<endl;
                }
    
            }
            
        }
        return 0;
    }
    
     
  • 相关阅读:
    Hibernate关联的集合对象排序
    Hibernate级联查询的分页问题
    Hibernate双向一对多级联保存优化
    Struts流程分析+源码分析
    jsp自定义函数库
    Java异常处理和设计
    struts2总体介绍
    struts和struts2的区别
    搭建struct环境
    struts-config.xml的配置
  • 原文地址:https://www.cnblogs.com/FantasticDoubleFish/p/14443956.html
Copyright © 2011-2022 走看看