完数——mooc《零基础学Java语言》-(浙大翁凯)第七周编程题(2)

题目内容:

一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。

现在,你要写一个程序,读入两个正整数n和m(1<=n<m<1000),输出[n,m]范围内所有的完数。

提示:可以写一个函数来判断某个数是否是完数。

输入格式:

两个正整数,以空格分隔。

输出格式:

其间所有的完数,以空格分隔,最后一个数字后面没有空格。如果没有,则输出一个空行。

输入样例:

1 10

输出样例:

6

时间限制:500ms内存限制:32000kb
 
代码实现:
/*
 * 完数(5分)
题目内容:
一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。
现在,你要写一个程序,读入两个正整数n和m(1<=n<m<1000),输出[n,m]范围内所有的完数。

提示:可以写一个函数来判断某个数是否是完数。

输入格式:
两个正整数,以空格分隔。

输出格式:
其间所有的完数,以空格分隔,最后一个数字后面没有空格。如果没有,则输出一个空行。

输入样例:
1 10

输出样例:
6

时间限制:500ms内存限制:32000kb
 */
import java.util.Scanner;

public class 完数 {
    public static boolean iswanshu(int i)//判断是否是完数的函数
    {
        boolean iswanshu=false;
        int count=0;
        int[] array=new int[i];
        for(int j=1;j<i;j++) 
        {
            if(i%j==0) 
            {
                array[count]=j;
                count++;
            }
        }
        int sum=0;
        for(int k=0;k<array.length;k++) 
        {
            sum+=array[k];
//            if(i==sum)
//            {
//                iswanshu=true;
//            }
        }
        if(i==sum)
        {
            iswanshu=true;
        }
        return iswanshu;
    }

    public static void main(String[] args) 
    {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        int a=in.nextInt();
        int b=in.nextInt();
        int isFirstOut=0;
        for(int i=a;i<=b;i++) //使用这一段程序可以避免最后一个完数后面出现空格的情况
        {
            if(iswanshu(i)) 
            {
                if(isFirstOut==1) //使用这一段程序可以避免最后一个完数后面出现空格的情况,当出现第一个完数时,前面无空格,
                {                 //中间有空格,到最后一个完数时,刚好避免空格
                    System.out.print(" ");
                }
                isFirstOut=1;
                System.out.print(i);
            }
        }
        if(isFirstOut==0) 
        {
            System.out.println();
        }

    }

}

猜你喜欢

转载自www.cnblogs.com/daimasanjiaomao/p/10939297.html