質問アルゴリズムは、ゴールドバッハの予想を改善します
リソース制限の
制限時間:1.0秒メモリ制限:256.0メガバイトの
問題の説明
関数(整数が素数であるかどうかを決定する)によれば、その後、この機能に依存する、偶数入力(6-N)N二つの素数の出力にそして(最初生存を分解するために必要)、及び各ゴールドバッハ予想確認:任意の偶数より大きいが又は6に等しい(偶数0x7FFFFFと6との間に検証することができる)は、2つの素数の和、注目のように表すことができます。ここではゴールドバッハ予想を検証するために必要とされていません。
入力形式の
入力テストデータは、フォーマットを満たしています。
7
出力形式は
、ユーザーの出力形式を満たすために必要。
3 + 3 = 6
サンプル入力
入力の例は、対象の要件を満たすために。
例:
30
の出力例を
上記入力及び出力に対応するサンプル。
例:
6 = 3 + 3
8 = 3 + 5
10 = 3 + 7
12 = 5 + 7
14 = 3 + 11
16 = 3 + 13
18 = 5 + 13
20 = 3 + 17
22 = 3 + 19
24 = 5 + 19
26 3 + 23 =
28 = 23 + 5
のデータサイズ及び規則は
、入力データの各数の範囲。
例:0 <N、M <100 、0 < =各マトリクス<= 1000の数。
import java.util.ArrayList;
import java.util.Scanner;
public class 哥德巴赫猜想2 {
public static ArrayList<Integer> list = new ArrayList<Integer>();
public static int n=0;
public static String [] num ;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
sc.close();
num = new String [n];
zhishu();
f(0,0);
for (int i = 6; i <n; i+=2) {
System.out.println(i+num[i]);
}
}
public static void f(int start,int end){
if(end>=list.size() || start>=list.size()) return;
int temp = list.get(start)+list.get(end);
if(temp>=n ) return;
if(num[temp]==null)
num[temp]="="+list.get(start)+"+"+list.get(end);
f(start,++end);
f(++start,end);
}
public static void zhishu(){
A: for (int i = 2; i <n; i++) {
int sqrt=(int) Math.sqrt(i);
for(int num:list){
if(i%num==0){
continue A;
}
else if(num>sqrt)
break;
}
list.add(i);
}
}
}