孪生素数(用筛法求素数)

news/2024/7/3 14:55:39

所谓孪生素数指的就是间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了,

就象孪生兄弟一样。最小的孪生素数是 (3, 5)

100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31),

(41, 43), (59, 61) (71, 73),总计有 8 组。

但是随着数字的增大,孪生素数的分布变得越来越稀疏,寻找孪生素数也变得越来越困难。

那么会不会在超过某个界限之后就再也不存在孪生素数了呢?

孪生素数有无穷多对!这个猜想被称为孪生素数猜想,至今没有被严格证明。

但借助于计算机我们确实可以找到任意大数范围内的所有孪生素数对。

下面的代码求出了正整数n以内(不含n)的所有孪生素数对的个数。

比如,当n=100的时候,该方法返回8

问题关键:

用筛法求出1-n之间的所有素数

用arr[]数组保存当前下标所代表的数字是否为素数,true为素数,false为非素数

 for(int i=2;i<arr.length;i++){
   for(int j=2;i*j<arr.length;j++){
    arr[i*j]=false;
   }

双重循环,即可算出1-n所有的素数,而且时间复杂度也较小

 

import java.util.Scanner;

 

public class 孪生素数 {

 

 public static void main(String[] args) {
  Scanner input=new Scanner(System.in);
  int count=0;
  int n=input.nextInt();
  boolean[] arr=new boolean[n+1];
  for(int i=1;i<arr.length;i++){
   arr[i]=true;
  }
  arr[0]=false;
  arr[1]=false;
  for(int i=2;i<arr.length;i++){
   for(int j=2;i*j<arr.length;j++){
    arr[i*j]=false;
   }
  }
  for(int i=2;i<arr.length;i++){
   if(arr[i]==true&&arr[i-2]==true){
   System.out.println((i-2)+","+i);
   count++;
   }
  }
  System.out.println(count);
 }

 

}

 

转载于:https://www.cnblogs.com/henuLiGang/p/6662234.html


http://www.niftyadmin.cn/n/4021789.html

相关文章

centos 6 添加端口白名单,设置防火墙白名单

1.使用root权限编辑iptables&#xff0c;命令如下&#xff1a; vi /etc/sysconfig/iptables 或 sudo vi /etc/sysconfig/iptables 2.在ACCEPT列表中增加访问的端口 -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT 3.编辑完成后保存&#xff0c;命令…

nginx离线安装教程

准备离线包 nginx-1.14.0.tar.gz pcre-8.42.tar.bz2 zlib-1.2.8.tar.gz Copy离线安装文件到服务器先安装pcre 1.解压pcre tar -jxvf pcre-8.42.tar.bz2 2.pcre编译环境验证 ./configure 3.编译pcre make 再安装zlib 1.解压zlib tar -zxvf zlib-1.2.8.tar.gz 2.zlib编…

【网络开发】组播问题分析

1、知识介绍 根据接收者对组播源处理方式的不同&#xff0c;组播模型分为以下三类&#xff1a; 1)ASM 模型&#xff1a;Any-Source Multicast&#xff0c;任意信源组播 2)SFM 模型&#xff1a;Source-Filtered Multicast&#xff0c;信源过滤组播 3)SSM 模型&#…

Postgresql 离线安装教程

Postgresql 离线安装教程 1.下载postgresql安装包和依赖包 依赖包包括&#xff1a;gcc、zlib、readline等&#xff0c;但是一般的服务器都自带gcc或zlib。 postgresql包下载地址&#xff1a;https://ftp.postgresql.org/pub/source/ readline包下载地址&#xff1a;http://ftp.…

linux系统权限修改命令

1.chmod命令用来修改文件的操作权限 修改文件权限&#xff1a; chmod 755 test.txt 修改文件夹权限&#xff1a; chmod 755 test/ 修改文件夹及文件夹下所有文件权限&#xff1a; chmod -R 755 test/ 2.chown命令用来修改文件的用户 修改文件所属用户&#xff1a; cho…

mysql快问快答

1.查看mysql版本 select version(); show variables like version; 2.mysql 可以按timestamp排序吗&#xff1f; 可以 3.怎么查询商户下是否有某个账户&#xff1f; 此种问题默认商户是已存在的&#xff0c;那么只需用账户左连接商户&#xff0c;看是否有记录。转载于:https://…

postgres设置时区报错:invalid value for parameter “TimeZone“: “PRC“

使用java连接postgres库时&#xff0c;因为数据库时区问题连接不成功&#xff0c;修改数据库时区时&#xff0c;一直提示“invalid value for parameter "TimeZone": "PRC"”错误&#xff0c;经排查&#xff0c;是因为数据库时区文件权限问题造成的。修改p…

C/C++ 线程池的作用与结构 C++代码实现

线程池的作用 如果多次使用线程&#xff0c;那么就需要多次的创建并撤销线程。但是创建/撤销的过程会消耗资源。线程池是一种数据结构&#xff0c;其中维护着多个线程&#xff0c;这避免了在处理短时间任务时&#xff0c;创建与销毁线程的代价。即在程序开始运行前预先创建一定…