编写一个程序来打印2个给定元素之间的所有回文素数

时间:2010-11-23 03:40:35

标签: java

我知道palindromic prime号码是什么。我只是想知道如何在Java中为此创建一个程序?

我在想的是我会做两个功能 -

1)一个函数,它将数字作为参数并检查数字是否为素数?

2)一个函数,它将数字作为参数并检查它是否是回文?

然后应用AND(&&)运算符,仅当两个条件都为真时返回TRUE,然后在输出上打印该数字。

这种方法是正确的还是有问题?

让我知道一些其他方法来解决这个问题。谢谢。

3 个答案:

答案 0 :(得分:2)

这是一个合理的开始但是性能是作业的一部分吗?这就是它会变得有趣的地方。您可以设计一系列可以拒绝可能性的测试,然后从最快到最慢排序。例如,只需快速最低位检查就可以消除所有偶数。

答案 1 :(得分:0)

Palindrom是单词(String)的属性,其中单词的反转与原始单词相同 例如。 “能够在我看到厄尔巴岛的时候” 这是你可以做到这一点的一种方式。在这里我使用apache commons lang StringUtil来反转数字

@org.junit.Test
public void test16() throws Exception {

    BigInteger from = new BigInteger("1");
    BigInteger to = new BigInteger("100000");

    BigInteger palindromicPrime = from;
    while((palindromicPrime = palindromicPrime.nextProbablePrime()).compareTo(to) < 0){
        if(palindromicPrime.toString().equals(StringUtils.reverse(palindromicPrime.toString()))){
            System.out.println(palindromicPrime);
        }
    }
}
Output :
2
3
5
7
11
101
131
151
181
191
313
353
373
383
727
757
787
797
919
929
10301
10501
10601
11311
11411
12421

答案 2 :(得分:0)

  1. 如果number大于10,请检查数字是否以1,3,7或9结尾(换句话说,根据1,3,7,9序列递增)。 (注意:2和5是素数,所以不要消除所有偶数,或所有以5结尾的数字)
  2. 如果1为真,则检查它是否是回文。
  3. 如果2为真,则检查它是否为素数。