显示素数误报的java程序
编译后,所有数字都显示素数。请指出任何类型的逻辑错误
int i, num, res;
boolean flag = false;
Scanner sc = new Scanner(System.in);
System.out.println("Enter number for Prime:");
num = sc.nextInt();
for(i = 2; i <= num / 2; i++) {
res = num % 2;
if(res == 0) {
flag = false;
break;
}
else flag = true;
}
if(flag = true)
System.out.println("Prime No.");
else
System.out.println("Not a Prime No.");
# 1 楼答案
在
if
语句中将flag= true
更改为flag == true
或flag
试试看
# 2 楼答案
你的部分问题是,你不是在测试素数,而是在测试偶数
if(flag),而不是if(flag=true)
您需要测试以下内容(而不是for循环):
素数有一个相当大的列表。[2-1000中有168个]
为了提高效率,我建议5人一组。这是可以通过减少检查来加快代码的速度
你可以做一个素数数组,使用循环遍历数组,直到a)你找到一个真实的结果,或者2)可能的素数大于被检查的数。[我不是用那种方法写的]
我用:http://www.factmonster.com/math/numbers/prime.html作为列表
# 3 楼答案
在以下语句中使用赋值(单
=
)而不是比较(双==
):它将始终返回真值,将其更改为
更简洁的方法是简单地使用
# 4 楼答案
答案是:
素数是可以被2、3和5整除的数,因为它们是一个LCD,可以证明如果任何一个数被它们整除,并且还有余数,那么它就是一个复合数