首页 > ACM题库 > 九度OJ > 九度-1050-完数[解题代码]
2013
12-12

九度-1050-完数[解题代码]

题目来源:2010年哈尔滨工业大学计算机研究生机试真题

题目描述:

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

输入:

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

输出:

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

样例输入:
6
样例输出:
6

java 代码如下:
import java.util.Scanner;

public class Main {
	static int n;
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		while(s.hasNextInt()){
			int tag = 0;
			n = s.nextInt();
			for(int i=6; i<=n; i++){
//				int temp = (int) Math.sqrt(i)+1;
				int sum = 0;
				for(int j=1;j<i;j++){
					if(i%j == 0)
						sum += j;
				}
				if(sum == i){
					if(tag ==0)
						System.out.print(i);
					else
						System.out.print(" "+i);
					tag = 1;
				}
			}
			System.out.println();
		}
	}

}
/**************************************************************
	Problem: 1050
	User: coder
	Language: Java
	Result: Accepted
	Time:1000 ms
	Memory:18144 kb
****************************************************************/


  1. /*
    * =====================================================================================
    *
    * Filename: 1366.cc
    *
    * Description:
    *
    * Version: 1.0
    * Created: 2014年01月06日 14时52分14秒
    * Revision: none
    * Compiler: gcc
    *
    * Author: Wenxian Ni (Hello World~), [email protected]
    * Organization: AMS/ICT
    *
    * =====================================================================================
    */

    #include
    #include

    using namespace std;

    int main()
    {
    stack st;
    int n,i,j;
    int test;
    int a[100001];
    int b[100001];
    while(cin>>n)
    {
    for(i=1;i>a[i];
    for(i=1;i>b[i];
    //st.clear();
    while(!st.empty())
    st.pop();
    i = 1;
    j = 1;

    while(in)
    break;
    }
    while(!st.empty()&&st.top()==b[j])
    {
    st.pop();
    j++;
    }
    }
    if(st.empty())
    cout<<"YES"<<endl;
    else
    cout<<"NO"<<endl;
    }
    return 0;
    }