Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-查找-素数与否_Java_Eclipse - Fatal编程技术网

Java-查找-素数与否

Java-查找-素数与否,java,eclipse,Java,Eclipse,使用Eclipse、Java 试着制作一种方法来检查一个数字是否是素数(平均值可以被1和他自己分开) 当前创建了一些功能(下面的代码)。此代码返回所需结果,但并非所有素数都返回,这意味着对于数字33和55,它返回的是false,而不是true 代码 private static void numberCheker() throws IOException { System.out.println("Enter number - "); int number; number

使用Eclipse、Java

试着制作一种方法来检查一个数字是否是素数(平均值可以被1和他自己分开)

当前创建了一些功能(下面的代码)。此代码返回所需结果,但并非所有素数都返回,这意味着对于数字33和55,它返回的是
false
,而不是
true

代码

private static void numberCheker() throws IOException {
    System.out.println("Enter number - ");
    int number;
    number = getNumber();
    boolean result = true;
    if ((number % 2 == 0) && (number != 2)) {
        System.out.println("Not");
    } else if (number == 1) {
        System.out.println("1 not a valid number");    
    } else if (number == 2)
        System.out.println("Simple");    
    else {
        for (int i = 2; i < number + 1; i++) {
            if (number % i == 0) {
                result = false;
            } else
                result = true;
        }
        if (result = true)
            System.out.println("Simple");    
        else 
            System.out.println("not Simple");
    }
}

但是我有

Enter number - 
33
not simple - **WRONG**
Enter number - 
55
not simple - **WRONG**

编辑:

多谢各位 试着像Michael Konietzka sad那样做:

 private static boolean numberCheker() throws IOException {

    System.out.println("Enter number - ");
    int number = getNumber();

    for (int i=2;i<number;i++)
     {
        if (number%i==0) return false; 
     }
        return (number>1);
}

现在它的工作完美了
谢谢你的帮助

我不知道简单数的定义是什么

但这可能是个问题

 if (result=true)
改为

 if (result)
编辑您还需要修复其他人提到的漏洞

if (result=true)
我想你指的是双等号:

if (result==true)
当您说if(result=true)时,此语句将始终返回true


编辑:您还需要修复for循环中的if-else内容。见梅先生的答案。

3是素数,但3的倍数不是素数,5的倍数也是如此。素数的倍数不是素数。素数只有这么多。还没有制定出设计素数的明确规则,我怀疑你们是否会这样做。
素数no是一个不在集合2n n 3n中的数字,它只能被自身和1整除。

问题是,当你发现这个数字不是素数时,你并没有跳出循环,要解决这个问题,只需添加、中断;在你的if陈述之后。。。代码如下:

        if (number%i==0){
            result=false;
             break;
            }
编辑

此外,您还需要修复if语句,因为@Smit建议出现2个问题 1-如果为false,则需要添加中断 2-最终需要更改if

   if (result=true) 

if(结果)
公共静态void main(字符串[]args){
System.out.println(“输入数字-”);
整数=55;
布尔结果=真;
如果((数字%2==0)和&(数字!=2)){
系统输出打印项次(“非”);
}
else if(数字==1){
System.out.println(“1不是有效数字”);
}
else if(数字=2)
System.out.println(“简单”);
否则{

对于(inti=2;i,您的bug在循环终止中

通过循环直到数字+1,数字最终将被自身除,剩下的余数为零,因此每个数字看起来都不是素数

循环到number/2(sqrt(number)会更有效,但代码的质量表明这并不重要)


此外,如果检测到零的余数,则必须中断循环。

您可以在类的静态方法中进行检查:

public static boolean isPrime(final int n)
    {
     for (int i=2;i<n;i++)
     {
        if (n%i==0) return false; 
     }
        return (n>1);
    }
public静态布尔值isPrime(final int n)
{
对于(int i=2;i1);
}
您必须通过从2到n-1的所有数字进行迭代,并检查n是否可以被i整除而不带余数。如果可以,则该方法可以立即返回false,因为找到了一个因子。如果在2和n-1之间未找到因子,且该数字大于1,则该方法返回true

要使用此方法,您可以简单地使用此方法,例如:

public static void main (String[] args) 
  {
     for (int i=1;i<10;i++)
     {
         System.out.println(i+": "+isPrime(i));
     }
publicstaticvoidmain(字符串[]args)
{

对于(int i=1;i我建议查看一种称为Erathosthenes筛的算法:

创建素数列表是一个非常简单的算法,它将帮助您了解如何确定一个数字是否为素数


顺便说一句-不要忘记排除负数!

“找不到错误”,问题在哪里?简单数的定义是什么?
请帮助-花3个小时-找不到错误..code
->什么,把所有内容压缩成一个句子?简单数
是什么意思?不是复数?99不是质数。3*33=99(不是简单数)或
如果(结果==true)
这甚至不应该编译。@EAKAE
if(result==true)
不过是
if(result)
因为
result
是布尔值。所以它可能是真的,也可能是假的。我知道它们是一样的,这是个人偏好的问题。不过,一些ide将它标记为警告(我想)@mikeTheLiar这将很好地编译。这是一个布尔赋值,所以最终结果将变为真。但如果不是布尔赋值,则不会编译。
   if (result)

public static void main(String[] args) {

        System.out.println("Enter number - ");
        int number = 55;
        boolean result = true;
        if ((number%2==0) && (number!=2) ){
            System.out.println("Not");
            }
        else if (number ==1){
            System.out.println("1 not a valid number"); 
        }
        else if (number ==2)
            System.out.println("Simple");   
        else{           
            for (int i=2; i<number;i++){
                if (number%i==0){
                    result=false;
                    break;
                    }
                else
                    result = true;

                }
            if (result)
                System.out.println("Simple");   
            else 
                System.out.println("not Simple");
        }   

    }

}
public static boolean isPrime(final int n)
    {
     for (int i=2;i<n;i++)
     {
        if (n%i==0) return false; 
     }
        return (n>1);
    }
public static void main (String[] args) 
  {
     for (int i=1;i<10;i++)
     {
         System.out.println(i+": "+isPrime(i));
     }