-3

输入行包含三个正整数:rsa,其中(2 <= r < s < a)。保证r是素数。

它应该打印YES,如果s是之后的下一个素数r并且a是之后的下一个素数s;否则,它应该打印NO.

目前,我有以下isPrime()方法:

boolean isPrime(int n)  {
    //check if n is a multiple of 2
    if (n%2==0) 
        return false;
    //if not, then just check the odds
    for(int i=3;i*i<=n;i+=2) {
        if(n%i==0)
            return false;
    }
    return true; 
}
4

2 回答 2

1

尝试这个:

public int nextPrime(int start){
    int next = start+1;

    while(!isPrime(next)){
        next++;
    }

    return next;
}

public void arePrimeSequence(int r, int s, int a){
    int firstPrime = nextPrime(r);
    int secondPrime = nextPrime(firstPrime);

    if(s == firstPrime && a == secondPrime){
        System.out.println("YES");
    }
    else{
        System.out.println("NO");
    }
}
于 2013-08-01T18:05:29.540 回答
0

可以在代码中进行一些改进以确定下一个素数。您可以将数字增加 2,而不是增加 1。因为第一个数字保证为素数,如果不是 2,则增加 2。

公共 int nextPrime(int start){

if (start==2) return 3;
int next = start+2;

while(!isPrime(next)){
    next+=2;
}

return next;

}

于 2016-07-28T11:03:11.707 回答