题目内容:
我们认为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
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();// 第一个表示n
int m = in.nextInt();// 第二个表示m
int count = 0;// 素数的个数
int sum1 = 0;// 前n个素数的和
int sum2 = 0;// 前m个素数的和
int last = 0;// 第n个素数
for (int i = 2;; i++) {
if (isprime(i) && count < n) {
sum1 += i;
sum2 += i;
count++;
last = i;
} else if (isprime(i) && count <= m) {
sum2 += i;
count++;
} else {
}
if (count == m) {
break;
}
}
System.out.println(sum2 - sum1 + last);// 一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
}
public static boolean isprime(int num)// 返回true是质数,false不是质数
{
int i;
boolean flag = true;// 默认是质数
if (num < 2)// 负数,0,1不是质数
{
flag = false;
} else if (num == 2)// 2是质数
{
flag = true;
} else {
for (i = 2; i <= Math.sqrt(num); i++)// 计算开方
{
if ((num % i) == 0)// 如果找到能够整除num,不是素数
{
flag = false;
break;
}
}
}
return flag;
}
}
import
java.util.Scanner;
public
class
Main {
public
static
void
main(String[] args) {
Scanner in =
new
Scanner(System.in);
int
n = in.nextInt();
// 第一个表示n
int
m = in.nextInt();
// 第二个表示m
int
count =
0
;
// 素数的个数
int
sum1 =
0
;
// 前n个素数的和
int
sum2 =
0
;
// 前m个素数的和
int
last =
0
;
// 第n个素数
for
(
int
i =
2
;; i++) {
if
(isprime(i) && count < n) {
sum1 += i;
sum2 += i;
count++;
last = i;
}
else
if
(isprime(i) && count <= m) {
sum2 += i;
count++;
}
else
{
}
if
(count == m) {
break
;
}
}
System.out.println(sum2 - sum1 + last);
// 一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
}
public
static
boolean
isprime(
int
num)
// 返回true是质数,false不是质数
{
int
i;
boolean
flag =
true
;
// 默认是质数
if
(num <
2
)
// 负数,0,1不是质数
{
flag =
false
;
}
else
if
(num ==
2
)
// 2是质数
{
flag =
true
;
}
else
{
for
(i =
2
; i <= Math.sqrt(num); i++)
// 计算开方
{
if
((num % i) ==
0
)
// 如果找到能够整除num,不是素数
{
flag =
false
;
break
;
}
}
}
return
flag;
}
}
|