来自输入的完美数字

时间:2014-11-06 06:53:59

标签: java loops for-loop perfect-numbers

我试图通过让用户输入数字来打印出数字是否完美。例如,当我输入一个像6这样的完美数字时,它告诉我它不是一个完美的数字而且无法弄清楚为什么。我的最终代码需要打印出来,如6 = 1 + 2 + 3.但我还没有那么远。

    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter a positive integer: ");
    int n = scanner.nextInt();

    int sum = 0;


    for(int i = 1;i<n;i++){

            if(n%2==0)
            sum += i;
    }

        if(sum==n){
            System.out.println(n + " is a positive number");
        }



        else {
            System.out.println(n + " is not a positive number");


    }

3 个答案:

答案 0 :(得分:1)

if(n%2==0)

应该是

if(n%i==0)

否则,对于偶数1,您的总和将是n-1n的所有数字的总和,对于奇数0,您的总和将是n

答案 1 :(得分:0)

您的代码如下:

        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter a positive integer: ");
        int n = scanner.nextInt();
        int sum = 0;
        for(int i = 1;i<n;i++){
                if(n%i==0)
                sum += i;
        }

        if(sum==n){
           System.out.println(n + " is a perfect number");
           System.out.print(n+" = ");
           for(int i=1;i<n;i++)
                if(n%i==0) System.out.print((i!=1?" + ":" ") + i);                
        }
        else {
           System.out.println(n + " is not a perfect number");
        }

在不使用三元运算符的情况下格式化输出:

           System.out.println(n + " is a perfect number");
           System.out.print(n+" = ");
           for(int i=1;i<n;i++)
              if(n%i==0) {
                 if (i==1) 
                     System.out.print(i);                
                 else
                     System.out.print(" + " + i);                
              }

答案 2 :(得分:0)

检查一下。 :)

  public static String isPerfect(int num){
        int product = 1;
        for (int x=1; x<num; x++){
            product *= x;
            if (product == num){
                return  num + " is a perfect number";
            }
        }

       return  num + " is a not perfect number"; 
    }