1

これが素数を見つける最良の方法でも最も効率的な方法でもないことはわかっています。ただし、169 が素数としてカウントされる理由を見つけることができないようです (小さい数の場合、私に関する限り、問題なく動作します)。

public static int checkPrime(int num, int i)
{
    if (i == num)
        return 1;

    else
    {
        if (num % i == 0)
            return 0;
        else
            checkPrime(num, i+1);

    }

    return 1;
}

メインクラス:

        System.out.println("Type a number");
        number = reader.nextInt();

        if ((number % 10) % 2 == 0)
            result = 0;

        else
            result = checkPrime(number, 2);

        if (result == 1 || number == 2)
            System.out.println(number + " is a prime number");
        else
            System.out.println(number + " is NOT a prime number");
4

1 に答える 1

6

int表現力を高めるためにbyに置き換えboolean、再帰呼び出しの値を返すと、メソッドは次のようになります。

public static boolean checkPrime(int num, int i)
{
    if (i == num)
        return true;    
    else
    {
        if (num % i == 0)
            return false;
        else
            return checkPrime(num, i+1);
    }
}

ではまだ機能しません。オーバーフローnum < 2するまで実行されます。iしたがって、主な主要なチェック関数として、次のようなものを書くことができます:

public static boolean checkPrime(int num)
{
   if(num<2)
     return false;
   else
     return checkPrime(num, 2);
}

ところで(number % 10) % 2、と同等number % 2です。

于 2012-05-12T10:44:55.650 に答える