34.蓝桥杯之孪生素数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sword_anyone/article/details/89260383

所谓孪生素数指的就是间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了,
就象孪生兄弟一样。最小的孪生素数是 (3, 5),
在 100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31),
(41, 43), (59, 61) 和 (71, 73),总计有 8 组。
但是随着数字的增大,孪生素数的分布变得越来越稀疏,寻找孪生素数也变得越来越困难。
那么会不会在超过某个界限之后就再也不存在孪生素数了呢?
孪生素数有无穷多对!这个猜想被称为孪生素数猜想,至今没有被严格证明。
但借助于计算机我们确实可以找到任意大数范围内的所有孪生素数对。
下面的代码求出了正整数n以内(不含n)的所有孪生素数对的个数。
比如,当n=100的时候,该方法返回8。试补全缺少的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。


class Demo02{
	// 判断是否是素数
	publicstaticboolean isPrime(int x){
		for(int i=2; i<=x/2; i++){
			if(x%i==0) return false;//填空
		}
		returntrue;
	}
	// 是否是孪生素数
	publicstaticint twinPrimeNum(int n){
		int sum = 0;
		for(int i=2; i<n; i++){
			if(isPrime(i) &&isPrime(i+2) && (i+2)<=n) sum++;//填空
		}
		
		return sum; // 返回个数
	}
	publicstaticvoid main(String[] args){
		int n = 1000;
		System.out.println(twinPrimeNum(n));
	}
}


package exe31_35;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Exe34 {
	
	static List<Integer> list = new ArrayList<Integer>();
	
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n =scanner.nextInt();
		list.add(2);
		for (int i = 2; i < n; i++) {
			for (int j = 2; j < i; j++) {
				if (j==i-1) {
					list.add(i);
					break;
				}
				else if (i%j==0) {
					break;
				}
			}
		}
		check();
	}

	private static void check() {
		int count = 0 ;
		for (int i = 1; i < list.size(); i++) {
			if (list.get(i)-list.get(i-1)==2) {
				count++;
			}
		}
		System.out.println(count);
	}

}


支付宝扫红包,让我能够买杯咖啡,继续创作,谢谢大家!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sword_anyone/article/details/89260383
今日推荐