编写java程序找出2-100之间的所有素数 求大神

Python031

编写java程序找出2-100之间的所有素数 求大神,第1张

素数又称质数,有无限个。素数定义为在大于1的整数中,除了1和它本身以外不再有其他因数的数称为素数。

java程序找出2-100之间的所有素数,代码如下:

public void findPrimeNumber(){

//存放素数集合

List<Integer>lists=new ArrayList<Integer>()

//遍历2-100

for(int x=2x<100x++){

//标志是否为素数,默认是true

boolean flag=true

//循环x除以(x/2)的数,能整除则不是是素数(不包含2)

for(int y=2y<x/2y++){

if(x%y==0){

//能整除,则把标志设置为false,不是素数

flag=false

break

}

}

if(flag){

//flag还是true,则是素数

lists.add(x)

}

}

System.out.println("2-100的素数集合:"+lists)

}

结果:

2-100的素数集合:[2, 3, 4, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

/**

*

需求:

求101-200之内的素数?

*/

public

class

demo3

{

public

static

void

main(string[]

args)

{

//

内循环判断是否为素数,外循环控制打印

int

num,

i

int

count

=

0,

sum

=

0

for

(num

=

101

num

<=

200

num++)

{

for

(i

=

2

i

<

num

i++)

{

if

(num

%

i

==

0)

{

break

}

}

if

(num

==

i)

{

sum

+=

num

count++

system.out.print(num

+

"\t")

if

(count

%

5

==

0)

{

system.out.println()

}

}

}

system.out.println()

system.out.println("101到200之间所有素数的和为"

+

sum)

}

}

public class Test {

public static void main(String[] args) {

int i, count = 0

for(i=2i<=100i++){

if(isPrimeNumber(i) == true){

count++

System.out.printf("%6d", i)

if(count%5 == 0){

System.out.println()

}

}

}

//判断一个数是否是素数,若是,返回true,否则返回false

public static boolean isPrimeNumber(int num){

int k = (int) Math.sqrt(num)

if(num == 2){

return true

for(int i=2i<=ki++)

if(num%i == 0)

return false

return true

}

}

扩展:

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数

质数的个数是无穷的。欧几里得的《几何原本》中有一个经典的证明。它使用了证明常用的方法:反证法。具体证明如下:假设质数只有有限的n个,从小到大依次排列为p1,p2,……,pn,设N=p1×p2×……×pn,那么,

是素数或者不是素数。

如果

为素数,则

要大于p1,p2,……,pn,所以它不在那些假设的素数集合中。

如果 为合数,因为任何一个合数都可以分解为几个素数的积;而N和N+1的最大公约数是1,所以不可能被p1,p2,……,pn整除,所以该合数分解得到的素因数肯定不在假设的素数集合中。因此无论该数是素数还是合数,都意味着在假设的有限个素数之外还存在着其他素数。所以原先的假设不成立。也就是说,素数有无穷多个。

其他数学家给出了一些不同的证明。欧拉利用黎曼函数证明了全部素数的倒数之和是发散的,恩斯特·库默的证明更为简洁,哈里·弗斯滕伯格则用拓扑学加以证明。