题目内容:
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
注意,是第n个素数到第m个素数之间的所有的素数,并不是n和m之间的所有的素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
15
时间限制:500ms内存限制:32000kb
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n= in.nextInt();
int m= in.nextInt();
// 给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
// 注意,是第n个素数到第m个素数之间的所有的素数,并不是n和m之间的所有的素数。
// 1.找到第n个素数是多少
// 2.从第n个素数开始(含),每找到一个素数就sum+,同时count++;直到count==m
int sum=0;
for(int s=2,count=0;count<m;s++) {
//s是否是素数
boolean isPrime=true;
for(int i=2;i<s;i++) {
if((s%i==0)&&(s!=i)) {
isPrime=false;
break;
}
}
if(isPrime) {
count++;
// System.out.println("第"+count+"个素数是"+s);//测试输出
if(count>=n) {
sum+=s;
}
}
}
System.out.println(sum);
// 1 2 3 4 5 6 7 8 9 10
// 2 3 5 7 11 13 17 19 23 29
}
}