题解 | #双素数#
双素数
http://www.nowcoder.com/practice/8cb1f3979b524ed1ba67b4f64ed9e4f2
import java.util.Scanner; /** * 双素数 * @Author zhuyq * @Date 2021-09-17 */ public class Main { private static int maxVal = 1000000; public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println(getMinKDoublePrime(Integer.parseInt(in.nextLine()))); } //输出第k小的双素数 public static int getMinKDoublePrime(int k){ int minKDoublePrime = -1; int count = 0; for(int i=1; i<=maxVal; i++){ if(isDoublePrime(i)){ count++; if(count==k){ minKDoublePrime=i; break; } } } if(count<k){ minKDoublePrime=-1; } return minKDoublePrime; } //判断是否是双素数 public static boolean isDoublePrime(int number){ boolean isDoublePrime = true; if(isPrime(number)){ int reverseNumber = Integer.parseInt(new StringBuffer(String.valueOf(number)).reverse().toString()); if(number!=reverseNumber && isPrime(reverseNumber)){ isDoublePrime=true; } else{ isDoublePrime=false; } } else{ isDoublePrime=false; } return isDoublePrime; } //判断是否是素数 public static boolean isPrime(int data){ if(data<2) return false; for(int i=2;i<=Math.sqrt(data);i++){ if(data%i==0) return false; } return true; } }