为什么要从大到小循环?效率不太好吧?我做了一个,你参考一下。private int maxDiv(int num) { int e = (int) Math.sqrt(num); for (int i = 2; i <= e; i++) { if (num % i == 0) { return num / i; } } return 1; }
public class MaxDiv { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input=new Scanner(System.in); System.out.println("请输入一个数"); int a=input.nextInt(); int j=a; int k; do { j--; k=a%j; }while(k>0); System.out.println(a+"最大约数是"+j); }}
简单粗暴public class MaximumDivisor { public static void main(String[] args) { int num = 99; int i = num; while (i > 1) { if (i != num && num % i == 0) break; i --; } System.out.println(i); } }
public class MaxDiv {
public static void main(String[] args) { // TODO Auto-generated method stub Scanner input=new Scanner(System.in); System.out.println("请输入一个数"); int a=input.nextInt(); int j=a; int k; do { j--; k=a%j; }while(k>0); System.out.println(a+"最大约数是"+j);
int e = (int) Math.sqrt(num);
for (int i = 2; i <= e; i++) {
if (num % i == 0) {
return num / i;
}
}
return 1;
}
while(k>0);的意思是k>0则继续循环,直到k==0时结束循环。
public class MaxDiv { public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
System.out.println("请输入一个数");
int a=input.nextInt();
int j=a;
int k;
do {
j--;
k=a%j;
}while(k>0);
System.out.println(a+"最大约数是"+j); }}
public static void main(String[] args) {
int num = 99;
int i = num;
while (i > 1) {
if (i != num && num % i == 0) break;
i --;
}
System.out.println(i);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
System.out.println("请输入一个数");
int a=input.nextInt();
int j=a;
int k;
do {
j--;
k=a%j;
}while(k>0);
System.out.println(a+"最大约数是"+j);
}
}
这个语句的执行顺序是先执行do代码块的语句,然后判断while表达式,如果while表达式值为true则继续执行do代码块。你这个代码第一次执行while时,k=1,所以while表达式的值为false,然后就跳出循环了。所以