输入行包含三个正整数:r
,s
和a
,其中(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;
}
答案 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;
}