如何检查数字是否为连续素数?

时间:2013-08-01 17:52:03

标签: java

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

如果YESs之后的下一个素数而ra之后的下一个素数,则应该打印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; 
}

2 个答案:

答案 0 :(得分: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");
    }
}

答案 1 :(得分:0)

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

public int nextPrime(int start){

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

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

return next;

}