第4周编程题
第4周编程题
依照学术诚信条款,我保证此作业是本人独立完成的。
温馨提示:
1.本次作业属于Online Judge题目,提交后由系统即时判分。
2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。
1
素数和(5分)
题目内容:
我们认为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();// 第一个表示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;
}
}