偶数分解
歌德巴赫猜想:任何一个大于六的偶数可以拆分成两个质数的和,打印出所有的可能
输入n为偶数,输出n的所有分界可能
如输入
100
输出:
100=3+97
100=11+89
100=17+83
100=29+71
100=41+59
100=47+53
Java:
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
int n;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
sc.close();
Prime p = new Prime(n);
for (int firstNum = p.nextPrime(); firstNum != -1 && firstNum <= n / 2; firstNum = p.nextPrime())
{
if (p.isPrime(n - firstNum))
System.out.println(n + "=" + firstNum + "+" + (n - firstNum));
}
}
}
class Prime
{
boolean[] PrimeNum;
int thisNum, upperLimit;
public Prime(int n)
{
upperLimit = n;
PrimeNum = new boolean[n];
for (int i = 0; i != n; ++i)
PrimeNum[i] = true;
for (int i = 2; i != n; ++i)
{
if (PrimeNum[i])
{
for (int j = 2 * i; j < n; j += i)
PrimeNum[j] = false;
}
}
thisNum = 0;
}
public boolean isPrime(int num)
{ return PrimeNum[num]; }
public int nextPrime()
{
if (thisNum == 2)
{
thisNum = 3;
}
else if (thisNum == 0)
{
thisNum = 2;
}
else
{
for (thisNum = thisNum + 2; thisNum < upperLimit; thisNum += 2)
{
if (PrimeNum[thisNum])
{
break;
}
}
}
if (thisNum >= upperLimit)
return -1;
else
return thisNum;
}
}