/*所谓孪生素数指的就是间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了,
就象孪生兄弟一样。最小的孪生素数是 (3, 5),
在 100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31),
(41, 43), (59, 61) 和 (71, 73),总计有 8 组。
但是随着数字的增大,孪生素数的分布变得越来越稀疏,寻找孪生素数也变得越来越困难。
那么会不会在超过某个界限之后就再也不存在孪生素数了呢?
孪生素数有无穷多对!这个猜想被称为孪生素数猜想,至今没有被严格证明。
但借助于计算机我们确实可以找到任意大数范围内的所有孪生素数对。
求出了正整数n以内(不含n)的所有孪生素数对的个数。
就象孪生兄弟一样。最小的孪生素数是 (3, 5),
在 100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31),
(41, 43), (59, 61) 和 (71, 73),总计有 8 组。
但是随着数字的增大,孪生素数的分布变得越来越稀疏,寻找孪生素数也变得越来越困难。
那么会不会在超过某个界限之后就再也不存在孪生素数了呢?
孪生素数有无穷多对!这个猜想被称为孪生素数猜想,至今没有被严格证明。
但借助于计算机我们确实可以找到任意大数范围内的所有孪生素数对。
求出了正整数n以内(不含n)的所有孪生素数对的个数。
比如,当n=100的时候,该方法返回8并且返回这些数对*/
--------------------------------------------------------------------
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Twinsprimenum {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("input a number:");
int n=new Scanner(System.in).nextInt();
int sum=0;
List<Integer> list=new ArrayList<Integer>();
for(int i=2;i<n;i++)
{
if(isprime(i)&&isprime(i+2)&&((i+2)<=n))
{ sum++;
list.add(i);
list.add(i+2);
}
}
System.out.println("counts is :"+sum+"\n there are:");
show(list);
}
private static void show(List<Integer> list) {
if(list.size()<2||list==null)
return;
for(int i=0;i<list.size();i=i+2)
{
int num=list.get(i);
int num2=list.get(i+1);
System.out.println(num+" "+num2 );
}
}
private static boolean isprime(int n) {
for(int i=2;i<=n/2;i++){
if(n%i==0)
return false;
}
return true;
}
}