问题:
输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数以及这些素数的和。 (双重循环)
200-500之间
public class Sushu {
public static void main(String[] args) {
int count = 0;
int sum = 0;
//外循环控制数的范围200-500
for (int i = 200; i <= 500; i++) {
//
boolean b = true;
//内循环控制除数,从2开始,直到i-1
for (int j = 2; j < i; j++) {
//只要有被整除的,就终止判断
if (i % j == 0) {
//只要有被整除的,就不做判断了,直接break
b = false;
break;
}
}
//所以b==true时.i才是素数,直接输出i
if (b == true) {
System.out.println("素数为:" + i);
count++;
sum += i;
}
}
System.out.println("200-500之间的素数个数为" + count + "和为" + sum);
}
}
升级版: m-n之间
import java.util.Scanner;
public class Demo13 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入m");
int m = sc.nextInt();
System.out.println("请输入n");
int n = sc.nextInt();
if (m < n && m >= 1 && n <= 500) {
int quantity = 0;
int sum = 0;
for (int i = m; i <= n; i++) {
boolean flag = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
flag = false;
break;
}
}
if (flag == true) {
quantity++;
sum += i;
}
}
System.out.println(m + "和" + n + "之间的素数个数为" + quantity + "这些素数的和为" + sum);
break;
} else {
System.out.println("您输入的数据有误,m要小于n且都要在1到500之间,请从新输入!");
}
}
}
}
注意:
双循环里面嵌套if判断语句,可以设置一个布尔变量来作为一个小开关,注意这个小开关要放在外循环里面,内循环外面,因为每执行一次外循环,我们都要判断一下对错。具体看代码。