import java.util.Scanner;
//计算m到n之间所有素数的和,其中 2 <= m <=n <=100
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int n = scanner.nextInt();
int sum = 0; //记录素数之和
for (int i = m; i < n; i++) {
int A = 0; //参数,判断一个数有没有整除的数
for (int j = 2; j < i; j++) {
if (i % j == 0) { //如果能整除
A = 1; //给参数A赋值1
break;
}
}
if (A == 0) //参数不变,就加上去
sum = sum + i;
}
System.out.println(sum - 1);
}
}
这是新的代码,上次的代码有错误,未检查到。
编者仔细思考了一下,在这个问题中,求素数的运行量在数字(n)大的时候会很大,所以求它的反面运行量会小很多。例如下列代码:
import java.util.Scanner;
//计算m到n之间所有素数的和,其中 2 <= m <=n <=100
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int n = scanner.nextInt();
int sum = 0; //记录非素数之和
int Sum = 0; //记录所有数的和
for (int i = m; i < n; i++) {
Sum = Sum + i; //求所以数的和
for (int j = 2; j < i; j++) {
if (i % j == 0) { //如果这个数能整除一个数
sum = sum + i; //将它加上去
break;
}
}
}
System.out.println(Sum - sum - 1); //输出它们的差值
}
}
这个代码的运行量会小很多,并且感觉会简单很多。
所以,再去某些问题时,求反面会方便且运行量会小很多,感谢观看。