输入包括一个整数n,(3 ≤ n < 1000)
输出符合条件的素数对的个数
10
2
import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { static ArrayList<Integer> record =new ArrayList<>(); public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); recordPrimes(n); int count=0; //对于有序数组的双指针的方法 int i=0; int j=record.size()-1; while (i<=j){ int sum=record.get(i)+record.get(j); if (sum==n){ count++; i++; j--; } else if (sum<n) i++; else j--; } System.out.println(count); } //比较快的判断是否为素数的方法 static void recordPrimes(int n) { boolean[] isPrim = new boolean[n]; Arrays.fill(isPrim, true); for (int i = 2; i * i < n; i++) if (isPrim[i]) for (int j = i * i; j < n; j += i) isPrim[j] = false; for (int i = 2; i < n; i++) if (isPrim[i]) record.add(i); } }