1、题目:给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。
输入值小于1000。
如,输入为10,程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
思路:首先要找出该正整数的质数,再遍历该正整数的前半部分的质数,在后半部分找到相匹配的质数,结果加一。
质数的特点:
大于1,只能被1和本身整除的,再没有其他因数的数
package test;
import java.util.Scanner;
public class test01 {
public static void main(String[] args) {
test01 t = new test01();
System.out.println("请输入一个正整数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
t.method(num);
}
//质数:大于1,只能被1和本身整除的,再没有其他因数的数
public boolean getNum(int num){
//num <=3时,质数有2,3
if(num <= 3){
return num > 1;
}
//当num > 3,质数无法被比自己小的整数整除
for(int i = 2; i<num; i++){
if(num % i == 0){
return false;
}
}
return true;
}
//遍历该正整数前半部分的质数,找到后半部分相匹配的质数。找到,则count+1;
public void method(int num){
int count = 0;
for(int i = 1; i <= num / 2; i++){
if(getNum(i)){
if(getNum(num-i)){
count++;
}
}
}
System.out.println(count);
}
}
2、简述final 和 finally 的区别(加一个finalize)
总体区别
final 用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖(重写),类不可以被继承。
finally 是异常处理语句结构中,表示总是执行的部分。
finallize 表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。允许回收此前未回收的内存垃圾。所有object都继承了 finalize()方法
关于final的几个注意事项:
a、final变量必须在声明的时候初始化或是在构造函数中初始化;
b、接口中声明的所有变量都是final的;
c、final,finally,finalize的区别。final表示不可变,finally 表示必须执行的语句,finalize表示垃圾回收时执行的代码。