fork download
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. class A_NoldbachProblem {
  6. public static void main(String[] args) throws Exception {
  7. Scanner scan = new Scanner(System.in);
  8. int n = scan.nextInt();
  9. int k = scan.nextInt()-1;
  10. PrimeGen p = new PrimeGen(n);
  11. List<Integer> prims = new ArrayList<Integer>();
  12. for(int i = 2; i <= n; i++){
  13. if(p.isPrime(i)>0){
  14. prims.add(i);
  15. }
  16. }
  17. int sum = 0;
  18. for(int i = 0; i < prims.size() - 1; i++){
  19. int c = prims.get(i) + prims.get(i+1) + 1;
  20. if(c <= n && p.isPrime(c)>0){
  21. sum ++;
  22. }
  23. }
  24. System.out.println(sum>=k?"YES":"NO");
  25. }
  26.  
  27. static int sum(List<Integer> is) {
  28. int c = 0;
  29. for (int i : is)
  30. c += i;
  31. return c;
  32. }
  33.  
  34. static class PrimeGen {
  35. public PrimeGen(int m) {
  36. m = (int) Math.sqrt(m);
  37. double max = 0;
  38. int r = 1;
  39. for (int i = 0; i < 4;) {
  40. max += r * m / Math.pow(Math.log1p(m), ++i);
  41. r *= i;
  42. }
  43. p = new int[(int) max];
  44. for (int i = 0, e = 2; i < p.length; i++) {
  45. for (; isPrime(e) < 1; e++)
  46. ;
  47. p[i] = e++;
  48. }
  49. this.m = p[p.length - 1];
  50. this.m = this.m * this.m;
  51. }
  52.  
  53. int isPrime(int n) {
  54. for (int e : p)
  55. if (e < 1)
  56. break;
  57. else if (n != e && n % e < 1)
  58. return 0;
  59. return 1;
  60. }
  61.  
  62. int max() {
  63. return m;
  64. }
  65.  
  66. int[] p;
  67. int m;
  68. }
  69. }
  70.  
Success #stdin #stdout 0.06s 213824KB
stdin
27 2
stdout
YES