题目内容:
对任意给定的两个正整数n和m,100<n<m<1000, 计算这两个数之间所有素数之和,包含n、m自身。
输入格式:
两个大于0的3位正整数
输出格式:
输出n与m之间的素数之和
输入样例:
200 800
输出样例:
45851
思路:
看到这种题目,我觉得大部分人对于两个数之间所有数的和是没有问题的,关键在于判断素数。 百度提供了素数的概念:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 这里写写我自己判断素数的方法,非最优,时间跟空间复杂度更好的可以看一下这篇java质数判断/java素数判断
代码:
import java
.util
.Scanner
;
public class Main {
public static void main(String
[] args
){
Scanner scanner
= new Scanner(System
.in
);
int n
= scanner
.nextInt();
int m
= scanner
.nextInt();
int sum
= 0;
for(int i
= n
;i
<= m
;i
++){
if(isPrime(i
)){
sum
+= i
;
}
}
System
.out
.println(sum
);
}
public static boolean isPrime(int m
) {
boolean flag
= true;
if (m
< 2) {
flag
= false;
}
for (int i
= 2; i
<= Math
.sqrt(m
); i
++) {
if (m
% i
== 0) {
flag
= false;
break;
}
}
return flag
;
}
}