LQ0246 孪生素数程序填空
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0246 孪生素数程序填空相关的知识,希望对你有一定的参考价值。
题目来源:蓝桥杯2011初赛 Java
题目描述
本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。
所谓孪生素数指的就是间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了,就象孪生兄弟一样。最小的孪生素数是 (3, 5),在 100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61) 和 (71, 73),总计有 8 组。但是随着数字的增大,孪生素数的分布变得越来越稀疏,寻找孪生素数也变得越来越困难。那么会不会在超过某个界限之后就再也不存在孪生素数了呢?
孪生素数有无穷多对!这个猜想被称为孪生素数猜想,至今没有被严格证明。但借助于计算机我们确实可以找到任意大数范围内的所有孪生素数对。
下面的代码求出了正整数 n 以内(不含 n )的所有孪生素数对的个数。比如,当 n=100 的时候,该方法返回 8。试补全缺少的代码。
源代码
Java
import java.util.*;
public class Main
public static boolean isPrime(int x)
for(int i=2; i<=x/2; i++)
if(x%i==0) _______; //填空1
return true;
public static int twinPrimeNum(int n)
int sum = 0;
for(int i=2; i<n; i++)
if(isPrime(i) && _______) sum++; //填空2
return sum;
public static void main(String[] args)
System.out.println(twinPrimeNum(10000));
问题分析
2个空分别填入“return false”和“isPrime(i + 2)”
AC的Java语言程序如下:
import java.util.*;
public class Main
public static boolean isPrime(int x)
for(int i=2; i<=x/2; i++)
if(x%i==0) return false; //填空1
return true;
public static int twinPrimeNum(int n)
int sum = 0;
for(int i=2; i<n; i++)
if(isPrime(i) && isPrime(i + 2)) sum++; //填空2
return sum;
public static void main(String[] args)
System.out.println(twinPrimeNum(10000));
以上是关于LQ0246 孪生素数程序填空的主要内容,如果未能解决你的问题,请参考以下文章