JAVA-验证哥德巴赫猜想
1.实现判断素数的方法
public static int prime( int p )//判断是否为素数
{
int i ;
if( p <= 1 ){
return 0;
}else if ( p == 2 ){
return 1;
}else{
for( i = 2; i <= p/2; i++ ){
if( p %i == 0 ){
return 0;
} else if( i > p/2 ){
return 1;
}
}
}
return 1;
}
这里定义方法返回类型是应该定义为boolean,但是我习惯C的写法,所以定义成了int,下面是改成boolean
public static boolean prime( int p )//判断是否为素数
{
int i ;
if( p <= 1 ){
return false;
}else if ( p == 2 ){
return true;
}else{
for( i = 2; i <= p/2; i++ ){
if( p %i == 0 ){
return false;
} else if( i > p/2 ){
return true;
}
}
}
return true;
}
2.实现验证哥德巴赫猜想的算法Goldbach
先解释一下哥德巴赫猜想:
任何一个不小与6的偶数均可以表示成两个奇素数之和
n是一个将要被验证的偶数
定义a=2,然后判断a和(n-a)是否都是素数,如果都是素数那么这个a与(n-a)就是我们要找的一组数据
public static void Goldbach( int n ){
int a;
int count=0;
for( a = 2 ; a <= n; a++){
if( prime(a) == 1 && prime(n-a) == 1){
count++;
if(count==1){
System.out.println( n + "=" + a + "+" + (n - a));
}
}
}
}
3.附上完整的代码
import java.util.Scanner;
public class Goldbach {
public static void main(String[] args) {
int m, n, i, cnt;
Scanner cin = new Scanner(System.in);
//输入要判断的范围 按照题目要求 我把这里直接赋值了
/*
m = cin.nextInt();
n = cin.nextInt();
*/
// 哥德巴赫猜想:任何一个不小与6的偶数均可以表示成两个奇素数之和 因此直接从 6 开始检测!!!
m = 6;
n = 1000;
// if ( m < 6 ) {
// m = 6;
// }
// if ( m % 2 == 1 ) {
// m++;
// }
cnt = 0;
for( i = m; i <= n; i += 2 ) {
Goldbach(i);
cnt++;
}
}
public static int prime( int p )//判断是否为素数
{
int i ;
if( p <= 1 ){
return 0;
}else if ( p == 2 ){
return 1;
}else{
for( i = 2; i <= p/2; i++ ){
if( p %i == 0 ){
return 0;
} else if( i > p/2 ){
return 1;
}
}
}
return 1;
}
public static void Goldbach( int n ){
int a;
int count=0;
for( a = 2 ; a <= n; a++){
if( prime(a) == 1 && prime(n-a) == 1){
count++;
if(count==1){
System.out.println( n + "=" + a + "+" + (n - a));
}
}
}
}
}
4.总结
现阶段的学习还是处于基本语法规则阶段,真正有java特色的编程还没有开始,本章主要还是在学习简单的输入输出和简单算法的实现