专栏首页FunTesterjava用递归筛选法求N以内的孪生质数(孪生素数)

java用递归筛选法求N以内的孪生质数(孪生素数)

本人最近读完一本书《质数的孤独》,里面讲到孪生质数,就想查一下孪生质数的分布情况。其中主要用到了计算质数(素数)的方法,搜了一下,排名前几的都是用for循环来做的,感觉略微麻烦了一些,在比较一些还是觉得用递归筛选法来解决这个问题。

新建List,然后从第0位开始,如果后面的能被这个数整除,则从数组中移除改元素,以此类推,最后留下的就是质数(素数)。代码如下:

static void get(List<Integer> list, int tt) {
        int num = list.get(tt);
        for (int i = tt + 1; i < list.size(); i++) {
            if (list.get(i) % num == 0) list.remove(i--);
        }
        if (list.size() > ++tt) get(list, tt);
    }

然后再去做相邻元素差求得孪生质数(孪生素数),贴一下求10000以内孪生质数(孪生素数)全部的代码:

List<Integer> list = new ArrayList<>();
        for (int i = 2; i < 10000; i+=2) {
            list.add(i);
        }
        get(list, 0);
        for (int i = 0; i < list.size() - 1; i++) {
            Integer integer = list.get(i);
            Integer integer1 = list.get(i + 1);
            if (integer1 - integer == 2) outputData(TEST_ERROR_CODE, "孪生质数:", integer + TAB + TAB + integer1);
        }

最后附上一份冒泡排序和插入排序的练习代码:

   public static void ff(int[] data) {
        for (int i = 0; i < data.length; i++) {
            for (int j = i; j > 0; j--) {
                if (data[j] < data[j - 1]) {
                    int num = data[j];
                    data[j] = data[j - 1];
                    data[j - 1] = num;
                }
            }
        }
        output(changeArraysToList(data));
    }

    public static void ff1(int[] data) {
        for (int i = 0; i < data.length; i++) {
            for (int j = 0; j < data.length - i - 1; j++) {
                if (data[j] > data[j + 1]) {
                    int num = data[j];
                    data[j] = data[j + 1];
                    data[j + 1] = num;
                }
            }
        }
        output(changeArraysToList(data));
    }

本文分享自微信公众号 - FunTester(NuclearTester),作者:八音弦

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • groovy使用stream语法递归筛选法求N以内的质数

    本人最近读完一本书《质数的孤独》,里面讲到孪生质数,就想查一下孪生质数的分布情况。其中主要用到了计算质数(素数)的方法,搜了一下,排名前几的都是用for循环来做...

    八音弦
  • 传参传的到底是什么?

    本人在封装一些基本方法的时候遇到过一个问题,我把对象当做参数传到方法里,然后在方法中对这个对象进行了一些修改,但是等我再去输出对象的值和属性时,却发现这些数据并...

    八音弦
  • android UiAutomator如何根据颜色判断控件的状态

    本人在用UiAutomator做测试的时候,经常会遇到一些控件因为不同的条件显示不同的颜色,在学习了UiAutomator图像处理之后,自己尝试写了一个方法来处...

    八音弦
  • groovy使用stream语法递归筛选法求N以内的质数

    本人最近读完一本书《质数的孤独》,里面讲到孪生质数,就想查一下孪生质数的分布情况。其中主要用到了计算质数(素数)的方法,搜了一下,排名前几的都是用for循环来做...

    八音弦
  • 排序(三):直接选择排序

    选择排序的基本思想是:每次从待排序的数据元素集合中选取关键字最小(或最大)的数据元素放到数据元素集合的最前(或最后),数据元素集合不断缩小,当数据元素结合为空...

    TheOneGIS
  • java array to list

    背景 想把数组转为list,使用list的判断元素是否存在的方法,结果发现一个坑,int类型的数组失败了  步骤 public static void main...

    千往
  • 嵌入式经典面试题

    一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重...

    Daotin
  • 洛谷P2607 [ZJOI2008]骑士(树形dp)

    题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英。他们劫富济贫,惩恶扬善,受到社会各界的赞扬。 最近发生了一件可怕的事情,邪恶的Y国发动了...

    attack
  • 计算机视觉 OpenCV Android | Mat像素操作

    下面演示对Mat对象中的每个像素点的值都进行取反操作,并且分别用这三种方法实现像素操作。

    凌川江雪
  • LeetCode 179. Largest Number(排序)

    题解:把数字给排个序,但是排序的标准是啥呢?两个数字孰大孰小呢?判断标准就是两个数字分别前后组合,得出的数字哪个大,则前面的那个数字就大。 一开始我的思路错了...

    ShenduCC

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动