0

我试图通过让用户输入一个数字来打印一个数字是否完美。例如,当我输入一个像 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");


    }
4

3 回答 3

1

if(n%2==0)

应该

if(n%i==0)

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

于 2014-11-06T06:57:21.517 回答
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);                
              }
于 2014-11-06T07:21:34.407 回答
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"; 
    }
于 2017-03-28T16:46:08.770 回答