2013-08-01 41 views
-3

输入行包含三个正整数:rsa,其中(2 <= r < s < a)。保证r是主要的。如何检查数字是否为连续素数?

它应该打印YES,如果s是下一个素数后ras之后的下一个素数;否则,应打印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; 
} 
+6

您对连续需求有什么要求?如果你还没有尝试过,我们不会做你的功课。 – hexafraction

+0

这是我对此感到困惑的一件事。并且需要帮助。任何指针将不胜感激 – Pritish

+1

他们都是素数?他们之间的任何数字是否是最好的? – Geobits

回答

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"); 
    } 
} 
0

一些改进可以在代码来确定下任首相进行。相反,由1递增的,你可以通过2.增加数量作为第一个数字是保证为总理,如果不是2,则通过增加2

公众诠释nextPrime(INT启动){

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

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

return next; 

}