-2

我不明白我做错了什么,没有语法错误,但它没有给出我想要的答案。该算法应该找到 1 到 10000 之间的整数以具有最大的除数,并说明它包含多少个除数。

public class pract3ex11 {

public static void main (String [] args) {
    int n;
    int i;
    int c=0;
    int max=0;
    int result;
    int d;
    for (n=2; n<10000; n++){
        d=c;
        c=0;
        int x=n;
        result = x;
        for (i=1; i<x; i++){


            result= result%i;
            if (result==0){
                c++;
            }

            if (c>d){
                max=n;

            }
        }
    }
    System.out.println(max+" "+c);

}
4

2 回答 2

3

当你设置 时max,你也应该设置d。否则,两者会不同步:

if (c>d){
    d = c;
    max=n;
}

您还需要在循环之前0分配给,并删除d

d=c;

在循环的顶部。

于 2013-04-16T14:27:09.670 回答
0

可能的解决方案:

public static void main(String[] args) {

      int count; 
      int maxDivisors;  
      int number;  
      maxDivisors = 1;  
      number = 1;
  for ( count = 2;  count  <= 10000;  count ++ ) {
         int x;  
         int divisors = 0;
      for ( x = 1;  x <= count;  x++ ) { 
        if ( count % x == 0 )
            divisors++;
          }

          if (divisors > maxDivisors) {
              maxDivisors = divisors;
              number = count;
          }

      }

      System.out.println("The maximum number of divisors are " + maxDivisors);
      System.out.println("Number is : " + number);
   } 
于 2013-04-16T14:38:43.553 回答