package com.kingdz.algorithm.time201703;
/**
* 略微改进版的哥德巴赫猜想,减少计算素数的次数
*
* @author kingdz
*
*/
public class Algo10 {
public static void main(String[] args) {
int[] prime = createPrime(100);
for (int i = 6; i < 1000; i = i + 2) {
int flag = 1;
for (int j = 2; j <= i / 2; j++) {
// 如果其中一个数是偶数则排除
if (j % 2 == 0 || (i - j) % 2 == 0) {
continue;
}
if (prime[j] == 1 && prime[i - j] == 1) {
// 两个数都是素数,则输出
System.out.println(i + "=" + j + "+" + (i - j));
flag = 0;
break;
}
}
// 如果有某个数不符合猜想则输出error
if (flag == 1) {
System.out.println("error\t" + i);
}
}
}
/**
* 计算素数组成的数组
*
* @param number
* @return
*/
private static int[] createPrime(int number) {
int[] prime = new int[number];
for (int i = 2; i < prime.length; i++) {
prime[i] = 1;
}
for (int i = 2; i * i < prime.length; i++) {
if (prime[i] == 1) {
for (int j = 2 * i; j < prime.length; j++) {
if (j % i == 0) {
prime[j] = 0;
}
}
}
}
return prime;
}
}
转载请注明原文地址: https://ju.6miu.com/read-23330.html