java例题_44 一个偶数总能表示为两个素数之和
1 /*44 【程序 44 偶数的素数和】
2 题目:一个偶数总能表示为两个素数之和。
3 */
4
5 /*分析
6 * 1、从键盘得到一个偶数(大于2的偶数,因为1不是素数)
7 * 2、用for循环从2开始遍历到n,j=n-i,如果j和i都是素数,输出结果,并停止循环
8 * 3、写出判断素数的函数,在for循环遍历的过程中调用
9 * 4、素数:除了1和其本身,没有其他的因数了---for循环遍历,如果遇到其他的数能除得尽,返回false;否者返回true
10 * */
11
12 package homework;
13
14 import java.util.Scanner;
15
16 public class _44 {
17
18 public static void main(String[] args) {
19 // 提示一个大于2的偶数
20 System.out.println("请输入一个大于2的偶数:");
21 // new一个系统输入扫描器
22 Scanner sc=new Scanner(System.in);
23 //声明n,并从键盘得到n
24 int n;
25 n=sc.nextInt();
26 //判断n是否为偶数,如果不是,提示重新输入
27 while((n%2!=0)||(n<=2)) {
28 System.out.println("输入错误,请重新输入:");
29 n=sc.nextInt();
30 }
31
32 //利用for循环遍历
33 for (int i = 2,j; i < n; i++) {
34 j=n-i;
35 if(isPrime(i)&isPrime(j)) { //判断i和j是否均为素数
36 System.out.println("偶数"+n+"为素数"+i+"和素数"+j+"的和");
37 }
38 }
39
40
41 }
42
43 private static boolean isPrime(int x) {
44 // 声明一个返回值
45 boolean isPrime = true; //默认为素数
46 // 利用数学方法,遍历2-根号x,判断是否有其他因数
47 for (int i = 2; i <= Math.sqrt(x); i++) {
48 if(x%i==0) {
49 isPrime=false; //如果有,就不是素数
50 break;
51 }
52 }
53 return isPrime;
54 }
55
56 }