Java-通过使用递归方法调用查找给定数字是否为素数

时间:2014-09-24 17:42:51

标签: java recursion

我做过很多谷歌搜索,但无法找到正确的答案。当我运行下面的代码时,我总是输出"即使输入是像13和#34;这样的素数,也不是素数。 请帮帮我。

import java.util.Scanner;


public class PrimeRecurssion {


    public static void main(String[] args) {
        // TODO Auto-generated method stub


        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        System.out.println("Your given number is:" + prime(number,2));

    }

    public static  String prime(int x,int temp )
    {
        if(x%temp == 0)
        {
            return("not a prime");
        }
        if(x != temp-1)
        {
        return prime(x,temp+1);
        }
        else
                return("prime");
    }

}

3 个答案:

答案 0 :(得分:1)

if(x - 1 != temp)
{
    return prime(x,temp+1);
}

if(x != temp + 1)
{
    return prime(x,temp+1);
}

您将xtemp - 1

进行比较

例如。 x = 13, temp = 12导致13 != 12-1的内容prime(13, 13) =>因此调用"no prime",其返回{{1}}

答案 1 :(得分:0)

尝试更改

if(x != temp-1)

if(x != temp+1)

它不会治愈你所有的错误,但可能会修复它。

答案 2 :(得分:0)

 public static String prime(int x,int temp )
    {
        if(x == 1)
        {
           return "prime";
        }
        if(x != temp)
        {
            if(x%temp == 0)
            {
                return("not a prime");
            }
            else
            {
                return prime(x,temp+1);
            }
        }
        else
                return("prime");
    }

这是有效的,因为如果你已经达到数字本身,你只想返回素数,否则你会在那之前达到非素数。查看代码,看看你是否能弄清楚发生了什么。