接口回调之哥德巴赫猜想

接口回调之哥德巴赫猜想

一、哥德巴赫猜想的概念

  • 任一大于2的偶数都可写成两个素数之和。 详情

二、哥德巴赫猜想的常规解法。

import java.util.Sacnner;
public class TestGoldbach {

	public static void main(String[] args) {
		
		Scanner input = new Scanner(System.in);
		
		int num = input.nextInt();
		
		//拆质数
		for(int i = 2; i <= num/2; i++) {
			if(isPrime(i) && isPrime(num-i)) {
				System.out.println(i + "\t" +(num-i));
			}
		}
	}
	
	//验证质数
	public static boolean isPrime(int n) {
		for(int i = 2; i < n ; i++) {
			if(n % i == 0) {
				return false;
			}
		}
		return true;
	}

}

此代码虽然在判断一个数是否为质数上做了一定的优化,但是代码块之间耦合度高。

三、运用接口回调之后的哥德巴赫猜想

public class Goldbach {

	public static void main(String[] args) {
		
		//4.实现者
		Check checkTool = new Check();
		
		checkTool.check(100, new Enginer());	
	}
}

//1.标准,接口,判断一个正整数是否为质数
interface Tool{
	public abstract boolean isPrime(int num);
}

//2.使用者,使用接口来验证哥德巴赫猜想(工具)
class Check{
	public void check(int num, Tool tool) {
		for(int i = 2; i <= num/2; i++) {
			if(tool.isPrime(i) && tool.isPrime(num-i)) {
				System.out.println(i + "\t" +(num-i));
			}
		}
	}
}

//3.实现类,实现接口中的判断是否为质数的方法
class Enginer implements Tool{

	@Override
	public boolean isPrime(int num) {
		
		for(int i = 2; i < num ; i++) {
			if(num % i == 0) {
				return false;
			}
		}
		return true;
	}
}
此代码运用到了接口,符合适配器模式。通过接口,一端是使用者,另一端是实现者。大大降低了代码的耦合度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值