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整除,所以该合数分解得到的素因数肯定不在假设的素数集合中。因此无论该数是素数还是合数,都意味着在假设的有限个素数之外还存在着其他素数。所以原先的假设不成立。也就是说,素数有无穷多个。
其他数学家给出了一些不同的证明。欧拉利用黎曼函数证明了全部素数的倒数之和是发散的,恩斯特·库默的证明更为简洁,哈里·弗斯滕伯格则用拓扑学加以证明。