不是我想说,楼上的都错了, 1楼的语法错,j的作用域有问题~ 2、3楼就不对~ 下面这个效率高 public class T { public static void main(String[] args) { int sum = 5,total=1000; for (int i = 3; i < total; i += 2) { int j = 3; for (; j < i / 2; j += 2) if (i % j == 0) break; if (j >= i / 2) { sum = sum + i; } } System.out.print(sum); } }