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 }

猜你喜欢

转载自www.cnblogs.com/scwyqin/p/12324081.html