[英]beginner whats wrong with my method
public class assignment6part3 {
public static void main(String[] args) {
int q = 0;
for ( int count=1; count <= 10000; count++) {
if (Prime(count)) {
q = q + 1;
}
}
System.out.println("It comes out " + q + " times.");
}
public static boolean Prime(int n) {
if (n <= 1) {
return false;
}
for (int i = 1; i < Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
我正在尝试获取0到10000之间的质数,但是当我运行它时,它说有0个质数。 代码的哪一部分导致此错误?
在函数Prime
您的for
循环像:: :: for(int i = 1; i < Math.sqrt(n); i++)
,从i = 1
,每个数字都可以被1
整除,因此可以除以0
质数。 P
i
初始化条件应为i = 2
您可能会考虑更改的其他内容::
for (int i = 1; i < Math.sqrt(n); i++)
应更改为
for (int i = 1; i <= Math.sqrt(n); i++)
注意:::查找素数的更理想方法是https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
该代码在实际检查数字之前返回false
,因为每个数字都可以被1整除。而且,在某些情况下,例如25和49,这些因数不小于平方根。 尝试这个:
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.