有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中,在不创建方法的情况下,尝试在上限内找到一个完全数

我只是想在一定的上限内打印出完美的数字,但是我得到了其他显示的数字,它们不是完美的数字。我不是在尝试使用一种方法,而不仅仅是在主循环中使用所有东西。我需要一些帮助

public static void main(String arg[]) {
    int upper;
    int sum = 0;   
    int i;
    System.out.println("Enter upper limit");
    Scanner stnd = new Scanner(System.in);
    upper = stnd.nextInt();
    
    for(int n = 1; n < upper;  n++) {
      i = 1;
      sum = 0;

      while (i <= n/2) {
        if (n%i == 0) {
          sum = sum + i;  
        }
        i++;
    
        if(sum == n) {      
          System.out.println(n+" is a perfect number");
          break;
        } else {
        }
      }
    }
}

共 (1) 个答案

  1. # 1 楼答案

    代码中有一个while循环,它将数字的因子相加。问题是,当while循环尚未完成时,您正在检查总和。在24的情况下,你已经加起来了

    1 + 2 + 3 + 4 + 6 + 8
    

    这是24,但你的循环还没有到12

    你得走了

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

    while循环之后,而不是在循环中