public class Prime { private int first,second; private Prime(){ first = 0; second = 0; } private static Prime instance = new Prime(); public static Prime getInstance(){ return instance; } public int getFirst(){ return first; } public int getSecond(){ return second; } public boolean Split(int arg0){ if(!isEvenNumber(arg0)){ return false; } for(int i=0;i<arg0/2;i++){ if(isPrimeNumber(arg0/2+i)&&isPrimeNumber(arg0/2-i)){ first = arg0/2-i; second = arg0/2+i; return true; } } return false; } public boolean isEvenNumber(int arg0){ if(arg0%2==0){ return true; }else return false; } public boolean isPrimeNumber(int arg0){ for(int i=2;i<=Math.sqrt(arg0);i++){ if((arg0%i)==0){ return false; } } return true; }
枚举出所有小于n的素数p1
然后p2=n-p1,如果p2也是素数,输出p1,p2但是这个并不能证明哥德巴赫猜想
public static boolean primeNum(int i){
for(int j=2;j<Math.sqrt(i);j++)
if(i%j==0) return false;
return true;
}
public static void main(String[] args) throws Exception{
if(args.length<1)
System.out.println("Usage:A very easy programe!");
int a=0;
try{
a=Integer.parseInt(args[0]);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Warning:No command line arguments!");
}catch(NumberFormatException e){
System.out.println("Please enter a number!");
}
if(a%2==0){
for(int i=1;i<a/2;i++)
{
if(primeNum(i)&&primeNum(a-i))
System.out.println(a+"="+i+"+"+(a-i));
}
}
else System.out.println("Please enter an even number!");
}
}
import java.io.*;
import java.math.BigInteger;public class Test {
public static final List<Integer> PRIME_LIST =
new ArrayList<Integer>(Arrays.asList(2, 3, 5, 7, 9, 11, 13, 15, 17, 19,
23, 29, 31, 37, 41, 43, 47, 49, 53,
59, 61, 67, 71, 73, 79, 83, 89, 97)); private static int currentMax = 97; public static void main(String[] args) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
try {
while (! (line = in.readLine()).equals("END")) {
int number = 0;
try {
number = Integer.parseInt(line);
} catch (NumberFormatException ex1) {
System.out.println("Not a number!");
continue;
} if (number <= 2 || number % 2 != 0) {
System.out.println("Please input an even number that is over 2!");
continue;
} searchPrimes(number); int half = number >> 1; for (int i = PRIME_LIST.get(0); i <= half; i++) {
if (PRIME_LIST.contains(number - i)) {
System.out.println(number + " = " + i + " + " + (number - i));
break;
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
} } private static void searchPrimes(int max) {
if (max <= currentMax) {
return;
} //其实这里应当用sieve,偷懒就用BigInteger了,反正那个PRIME_LIST可以用来作为sieve的依据
for (; currentMax < max; currentMax++) {
if (new BigInteger(currentMax + "").isProbablePrime(10)) {
PRIME_LIST.add(currentMax);
}
}
}
}
而且我也不知道你的键盘接受是怎么接受的
你是YATIAN 的吗
是西安的吗
我运行了,你的代码不对
参数加了,不对啊
你的QQ是多少,我M你
private int first,second;
private Prime(){
first = 0;
second = 0;
}
private static Prime instance = new Prime();
public static Prime getInstance(){
return instance;
}
public int getFirst(){
return first;
}
public int getSecond(){
return second;
}
public boolean Split(int arg0){
if(!isEvenNumber(arg0)){
return false;
}
for(int i=0;i<arg0/2;i++){
if(isPrimeNumber(arg0/2+i)&&isPrimeNumber(arg0/2-i)){
first = arg0/2-i;
second = arg0/2+i;
return true;
}
}
return false;
}
public boolean isEvenNumber(int arg0){
if(arg0%2==0){
return true;
}else
return false;
}
public boolean isPrimeNumber(int arg0){
for(int i=2;i<=Math.sqrt(arg0);i++){
if((arg0%i)==0){
return false;
}
}
return true;
}
}