1007
package com.company; import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { // write your code here Scanner sc=new Scanner(System.in); int N=sc.nextInt(); int[] num=new int[N];//N以内的所有数 int i; ArrayList sushu=new ArrayList(); sushu.add(2); //将N以内所有数存入数组,获取素数,并存入sushu中 for (i=0;i<N;i++){ num[i]=i+1; if (num[i]>2){ for (int j=2;j<num[i]-1;j++) { if (num[i] % j != 0) { } else { break; } if (j==num[i]-1){ sushu.add(num[i]); } } } } int count=0; for (int k=1;k<sushu.size();k++){ if(Integer.parseInt(sushu.get(k).toString())-Integer.parseInt(sushu.get(k-1).toString())==2){ count++; } } System.out.println(count); } }
提示超时扣两分,这就很难受,难道还要优化?
package com.company; import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { // write your code here Scanner sc=new Scanner(System.in); int N=sc.nextInt(); int[] num=new int[N];//N以内的所有数 int i; ArrayList sushu=new ArrayList(); sushu.add(2); sushu.add(3); //将N以内所有数存入数组,获取素数,并存入sushu中 for (i=0;i<N;i++){ num[i]=i+1; if (num[i]>2){ for (int j=2;j<=Math.sqrt(num[i]);j++) { if (num[i] % j != 0) { } else { break; } if (j==(int)Math.sqrt(num[i])){ sushu.add(num[i]); } } } } int count=0; for (int k=1;k<sushu.size();k++){ if(Integer.parseInt(sushu.get(k).toString())-Integer.parseInt(sushu.get(k-1).toString())==2){ count++; } } System.out.println(count); } }
内循环结束条件改成j<=Math.sqrt(num[i]),并没有改变超时的情况。
package com.company; import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { // write your code here Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int i, j, k = 0; int q = 1; int number = 0; int flag = 1; int[] A = new int[N]; int[] B = new int[N]; B[0]=2; for (i = 3; i <= N; i++) { A[k++] = i; } for (int m = 0; m < k; m++) { for (j = 2; j <= Math.sqrt(A[m]); j++) { if (A[m] % j == 0) { flag = 0; break; } else { flag = 1; } } if (flag == 1) { B[q++] = A[m]; flag = 1; } } for (i = 0; i<q-1; i++){ if (B[i + 1] - B[i] == 2) { number++; } } System.out.println(number); } }
脑壳疼,挣了两分,告辞
勿在浮沙筑高台