判断一个整数是否为素数

题目:判断101-200之间有多少个素数,并输出所有素数

这道题目,需要使用for循环去遍历出所有的需要判断的元素,并再次使用for循环,对元素进行是否是素数的判断.

素数:只能被1和自身整除的数

那么就要去考虑如何写判断条件了.这道题目也花了我一些的功夫,明知道很简单,但由于程序写的太少和编程思想的缺少,墨迹了很久.

1)小于2的数(即1)不是素数

2)对于大于2的一个整数n,要判断n能否整除2~(n-1),只要满足了一次,这个n就肯定不是素数了.

看了网上的一些代码,学到了一招,采用flag来记录程序中的判断的情况,对于菜鸟养成编程思维很有帮助.(本题中可以直接将true或者false返回)

 1 //打印出一个区间内的素数及其个数
 2     private static void method() {
 3         int count = 0;
 4         for(int i = 2;i <= 200;i++){
 5             boolean flag = true;
 6             for(int j = 2;j < i;j++){
 7                 if(i % j == 0){
 8                     flag = false;
 9                     break;
10                 }
11             }
12             if(flag == true){
13                 count++;
14                 System.out.println(i);
15             }
16         }
17         System.out.println(count);
18     }
 1 //判断输入的一个数n是否是素数(让n和(2-n-1)的数都做一遍取余运算)
 2     private static boolean method1(int n) {
 3         if(n < 2){
 4             return false;
 5         }
 6         for(int i = 2;i < n;i++){
 7             if(n % i == 0){
 8                 return false;
 9             }
10         }
11         return true;
12         //return true;
13     }

搜索过后发现,网上有很多的实现的方法,一种比一种简单,代码简化了很多.

其中的一种简化是,减少判断的区间,可以选择直接将偶数的情况在一开始就去除掉.

 1     //改进算法:可以直接将偶数的情况去除掉
 2     private static boolean method2(int n){
 3         if(n < 2)
 4             return false;
 5         if(n % 2 == 0)
 6             return false;
 7         for(int i = 3;i < n;i++){
 8             if(n % i == 0)
 9                 return false;
10         }
11         return true;
12     }

其余的简化算法我没有一一去研究.

posted @ 2017-03-08 18:56  leevanes  阅读(3553)  评论(0编辑  收藏  举报