运行Java eclipse时出错
当我运行此代码时:运行Java eclipse时出错,java,eclipse,Java,Eclipse,当我运行此代码时: package jmv; public class euler3 { static int x=1; static long z = 600851475143L; public static void main(String[] args) { System.out.println(isPrime(123454321)); } public static boolean isPrime(int p){
package jmv;
public class euler3 {
static int x=1;
static long z = 600851475143L;
public static void main(String[] args) {
System.out.println(isPrime(123454321));
}
public static boolean isPrime(int p){
for(int y=1 ; y<x ;){
if(x%y == 0){
return true;
}else{
return false;
}
}
return false;
}
}
包jmv;
公共类euler3{
静态int x=1;
静态长z=600851475143L;
公共静态void main(字符串[]args){
System.out.println(iPrime(123454321));
}
公共静态布尔iPrime(int p){
for(int y=1;yfor(int y=1;y因为你的循环从未执行。y=1
永远不会低于x=1。
for循环从未执行,因为1事实上你没有检查p,函数isPrime()的参数
应该是这样的:
package jmv;
public class euler3 {
static int x=1;
static long z = 600851475143L;
public static void main(String[] args) {
System.out.println(isPrime(123454321));
}
public static boolean isPrime(int p){
if (p%2 == 0) {
return false;
} else {
for(int y=3 ; y<p ; y=y+2){
if(p%y == 0){
return false;
}
}
}
return true;
}
}
包jmv;
公共类euler3{
静态int x=1;
静态长z=600851475143L;
公共静态void main(字符串[]args){
System.out.println(iPrime(123454321));
}
公共静态布尔iPrime(int p){
如果(p%2==0){
返回false;
}否则{
对于(int y=3;y=3。但这是基础数学,我肯定你忘记了
这样做可以保存许多测试。如果使用y++进行测试,则将检查每个偶数,这是不必要的,因为如果一个数是偶数且大于2,则它不是素数
希望能有帮助!那么p
永远不用怎么办?@Djon谢谢你的好意。这是迄今为止唯一指出所有问题的答案,+1。这不是该代码不能正常工作的唯一原因,你还应该解决其他问题。(并更正“低于”).阅读一些java的基本教程,或者阅读一些java的好书,比如Head First java,这些书肯定会对你有所帮助……事实上,你可以通过测试(p/2)来进行更多优化,因为有一个众所周知的定理表明,如果y是素数,p除以整数p,那么y就是
public static boolean isPrime(int p){
for(int y = 2 ; y < p ; y++){
if(p % y == 0){
return false;
}
}
return true;
}
package jmv;
public class euler3 {
static int x=1;
static long z = 600851475143L;
public static void main(String[] args) {
System.out.println(isPrime(123454321));
}
public static boolean isPrime(int p){
if (p%2 == 0) {
return false;
} else {
for(int y=3 ; y<p ; y=y+2){
if(p%y == 0){
return false;
}
}
}
return true;
}
}