题目内容:
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
注意,是第n个素数到第m个素数之间的所有的素数,并不是n和m之间的所有的素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
上面的是问题 下面的是我的代码。不知道是哪个地方出错了什么都不输出
package zuoye;
import java.util.*;
public class 素数和 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int m=in.nextInt();
int sum=0;
while(0<n&&n<=m&&m<=200) {
for(int i=n;i<=m;i++) {
for(int j=2;j<i;j++) {
if(i/j!=0) {
sum=sum+i;
}
}
}
}
System.out.println(sum);
}
}
把while改成if就行了,因为在while循环里面,你没有改变n的值,所以就会一直循环执行里面的代码,执行不到最后的输出语句
不能输出,那就是停留在了while中,所以下面代码查一下问题
while(0<n&&n<=m&&m<=200) {
System.out.println(n);
System.out.println(m);
for(int i=n;i<=m;i++) {
for(int j=2;j<i;j++) {
if(i/j!=0) {
sum=sum+i;
}
}
}
Scanner in=new Scanner(System.in);
System.out.print("请输入第一个数n:");
int n=in.nextInt();
System.out.print("请输入第二个数m:");
int m=in.nextInt();
int sum=0;
if(0<n&&n<=m&&m<=200) {
for(int i=n;i<=m;i++) {
boolean isShuShu = true;//判定i是否是素数
for(int j=2;j<i;j++) {
if(i%j==0) {
isShuShu = false;
break;
}
}
if(isShuShu){
sum=sum+i;
}
}
}
System.out.println(n+"到"+"之间的素数之和为:"+sum);
不输出是你错误使用while变死循环了,也顺便改了你的逻辑的小问题
既然你的n和m代表的是第几个素数,又要求素数的和,为啥你的sum直接加i,i不是你的个数吗,我的思路是根据题目的范围,求出前200个素数,不多,算出来第200个也就1000多,放到数字了,0-199下标,根据n和m的值去数组里面取就是了
我感觉你题目都没看懂 说的是第n个到第m个的素数和 你求个n到m之间的所有素数和 还用while循环不跳出循环 一个字 绝