アルゴリズムのJava実装はブルーブリッジカップゴールドバッハの予想を改善します

質問アルゴリズムは、ゴールドバッハの予想を改善します

リソース制限の
制限時間: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);
		}
	}

}

发布了1448 篇原创文章 · 获赞 1万+ · 访问量 170万+

おすすめ

転載: blog.csdn.net/a1439775520/article/details/104724701