Java素数检查未按预期工作
我已经写了检查素数的代码,但是它没有给我正确的输出Java素数检查未按预期工作,java,Java,我已经写了检查素数的代码,但是它没有给我正确的输出 int flag; Scanner s = new Scanner (System.in); System.out.println("enter upper nd lower bound"); int lower = s.nextInt(); int upper = s.nextInt(); int i=0; int j=0; for ( i =lower ; i<=upper
int flag;
Scanner s = new Scanner (System.in);
System.out.println("enter upper nd lower bound");
int lower = s.nextInt();
int upper = s.nextInt();
int i=0;
int j=0;
for ( i =lower ; i<=upper ;i++){
if(i==1){
continue;
}
}
flag =1;
for ( j = 2 ; j<=i/2 ; j++) {
if(i%j==0)
flag = 0;
break;
}
if(flag == 1){
System.out.println(i);
}
int标志;
扫描仪s=新的扫描仪(System.in);
System.out.println(“输入上下限”);
int lower=s.nextInt();
int upper=s.nextInt();
int i=0;
int j=0;
对于(i=lower;i/*包无论如何;//不要放置包名*/
导入java.util.*;
导入java.lang.*;
导入java.io.*;
/*只有当类是公共的时,类的名称才必须是“Main”*/
表意文字
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
布尔标志;
扫描仪s=新的扫描仪(System.in);
System.out.println(“输入上限和下限”);
int lower=s.nextInt();
int upper=s.nextInt();
对于(int i=lower;i代码的主要问题是,第二个for循环
应该嵌套在第一个for循环
中。因为第二个for循环
中的代码得到了i=11
。当我们将第二个for循环
放入嵌套的for循环
中时,将有不同的值de>i
基于条件
Boolean flag;
Scanner s = new Scanner (System.in);
System.out.println("enter upper nd lower bound");
int lower = s.nextInt();
int upper = s.nextInt();
int i=0;
int j=0;
for ( i =lower ; i<=upper ;i++){
if(i==1){
continue;
}
flag =true;
for ( j = 2 ; j<=i/2 ; j++) {
if(i%j==0)
flag =false;
break;
}
if(flag){
System.out.println(i);
}
}
布尔标志;
扫描仪s=新的扫描仪(System.in);
System.out.println(“输入上下限”);
int lower=s.nextInt();
int upper=s.nextInt();
int i=0;
int j=0;
对于(i=lower;i)您期望的输出是什么?您的代码编写不正确,它包含error@villat我的预期输出是2 3 5 7。因为这些是介于1到10之间的素数,看起来像是放错了位置的}
。在第二个循环开始之前,你的第一个for
循环需要i
一直到11。你的第二个循环应该嵌套在第一个循环中,而你在第一个循环之后逻辑上得到了它。@Andra如果代码中没有错误,Ajay可能就不需要在这里问问题了。thanx但是你能帮我解决我的错误吗code@AjayKumarSinha它只是花括号}
,就在标志=1的正上方;
,您必须将其移动到代码的末尾。此外,您只检查i==1
是否存在无效的素数检查,而您不能检查1右下方任何数字的素数?这就是为什么我将其更改为i@AjayKumarSinha“请将其标记为答案”的原因?
Boolean flag;
Scanner s = new Scanner (System.in);
System.out.println("enter upper nd lower bound");
int lower = s.nextInt();
int upper = s.nextInt();
int i=0;
int j=0;
for ( i =lower ; i<=upper ;i++){
if(i==1){
continue;
}
flag =true;
for ( j = 2 ; j<=i/2 ; j++) {
if(i%j==0)
flag =false;
break;
}
if(flag){
System.out.println(i);
}
}