在Java中使用接口回调验证哥德巴赫猜想

用接口回调验证哥德巴赫猜想

在学习到接口这一章节的时,用接口回调验证哥德巴赫猜想,接下来我们就用接口回调完成任意输入一个大于6偶数拆成两个素数的和。首先第一步定义一个MathTool 的接口,里面定义一个public abstract boolean isPrime(int n) 方法,第二步验证哥德巴赫猜想(工具)定义一个抽象的checkGoldBach(int num , MathTool tool) 方法,两个形参一个为输入的偶数值,另一个为MathTool类型的对象。第三步定义一个实现类EngineerAsIsPrime 继承MathTool 接口并覆盖 isPrime(int n) 方法用于返回。第四步调用方法**checkGoldBach(m , new EngineerAsIsPrime());**进而完成程序。

import java.util.Scanner;

public class TestGoldBach {

	public static void main(String[] args) {
		
		Scanner input=new Scanner(System.in);
		System.out.print("请输入一个大于6的偶数:");
		int m=input.nextInt();
		
		//(4)程序员A,調用工具方法
		checkGoldBach(m , new EngineerAsIsPrime());//(isPrime())  ---> (for(int i = 2 ; i < n; i++) {  if(n % i == 0) {  return false;  }  }  return true;)
	}
	
	//(2)验证哥德巴赫猜想(工具)
	public static void checkGoldBach(int num , MathTool tool) {
		//1.将大于6的偶数进行拆分
		for(int i = 2 ; i < num/2 ; i++) {
			if( tool.isPrime(i) && tool.isPrime(num-i)) {
				System.out.println(num+"拆成的两个质数分别为:"+i +"\t"+ (num-i));
			}
		}
	}
}

//(1)约定:指定标准(隔离)
interface MathTool{
	public abstract boolean isPrime(int n);
}


//(3)程序员A,写个实现类
class EngineerAsIsPrime implements MathTool  {
	@Override
	public boolean isPrime(int n) {
		for(int i = 2 ; i < Math.sqrt(n); i++) {
			if(n % i == 0) {
				return false;
			}
		}
		return true;
	}
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值