素数_面试中常考

来源:转载

概念

只有1和它本身两个正因数的自然数,叫质数(Prime Number)。

(如:由2&pide;1=2,2&pide;2=1,可知2的因数只有1和它本身2这两个约数,所以2就是质数。

与之相对立的是合数:“除了1和它本身两个因数外,还有其它因数的数,叫合数。

”如:4&pide;1=4,4&pide;2=2,4&pide;4=1,很显然,4的因数除了1和它本身4这两个因数以外,还有因数2,所以4是合数。)

100以内的质数有:2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,在100内共有25个质数。

注:

(1)1既不是质数也不是合数。因为它的约数有且只有1这一个因数。

(2)2和3是所有素数中唯一两个连着的数。

(3)2是唯一一个为偶数的质数。

下面用java实现打印出1到100内的所有质素:

 1 /** 2 * 3 */ 4 package com.b510.parmnumber; 5 6 /** 7 * 质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数 8 * @author hongten([email protected])<br> 9 * @date 2013-5-2210 */11 public class MyMethod {12 public static void main(String[] args) {13 int result = getTimes();14 System.out.println("100以内的质素有 ["+result+"]个!");15 }16 17 /**18 * 获取质素的个数19 * @return20 */21 public static int getTimes(){22 int result = 0;23 for (int i = 2, j = 0; i <= 100; i++) {24 if (prime(i)) {25 System.out.printf("%5d", i);26 j++;27 if (j % 5 == 0 && j != 0) {28 System.out.println();29 }30 }31 result = j;32 }33 return result;34 }35 36 /**37 * 判断是否为素数的方法38 * 39 * @param num 40 * @return41 */42 public static boolean prime(int num) {43 //2本身是质素,所以这里需要首先判断44 if (num == 2)45 return true;46 boolean flag = true;47 //如果当num大于2的时候,循环2到(num-1),如果在循环过程中48 //有被num整除的数,说明num不是质素49 for (int m = 2; m <= (num - 1); m++) {50 if (num % m == 0) {51 flag = false;52 break;53 }54 }55 return flag;56 }57 }

运行效果:

 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97100以内的质素有 [25]个!

 

分享给朋友:
您可能感兴趣的文章:
随机阅读: