poj 2739 java
这是今天做 自己把想法规划了一下 然后做的时间还是花费了两个小时 不够熟练 在一些小地方要注意让sum重新归零
1 import java.util.ArrayList; 2 import java.util.List; 3 import java.util.Scanner; 4 import java.io.*; 5 6 public class Main { 7 8 public static void main(String args[]) { 9 10 Scanner cin = new Scanner(new BufferedInputStream(System.in)); 11 List<Integer> prime = new ArrayList<Integer>(); 12 int k=0,Sum=0,num; 13 for(int i=2;i<10000;i++){ 14 if(IsPrime(i)){ 15 prime.add(i); 16 } 17 } 18 19 while (hasNext((num=cin.nextInt()))) { 20 21 if(IsPrime(num)){ 22 k=1; 23 } 24 25 for(int i=0;i<num;i++){ 26 27 int q =i; 28 29 int limit = prime.get(i)+prime.get(i+1); 30 if(limit>num) 31 break; 32 33 34 while(true){ 35 36 Sum=Sum+prime.get(i); 37 i++; 38 39 if(Sum==num){ 40 k++; 41 Sum=0; 42 break; 43 } 44 45 if(Sum>num){ 46 Sum=0; 47 break; 48 } 49 50 } 51 52 i=q; 53 54 } 55 56 System.out.println(k); 57 k=0; 58 } 59 60 61 62 } 63 64 public static boolean hasNext(int num){ 65 if(num==0){ 66 return false; 67 } 68 69 return true; 70 71 } 72 73 public static boolean IsPrime(int num) { 74 for (int i = 2; i <= Math.sqrt(num); i++) { 75 if (num % i == 0) 76 return false; 77 } 78 return true; 79 }