【发布时间】:2020-02-25 22:25:52
【问题描述】:
这里是 Java 新手。我找到了所有素数,直到某个数字(用户给出),但我现在找到回文数。我尝试了一些方法,但似乎都把主要部分搞砸了。
【问题讨论】:
-
我会把你的主要检查和回文检查分成两种方法(单一责任原则:做一件事,做好)。然后,在你的循环中首先检查它是否是素数,如果是,检查它是否是回文数。这也应该更有效,因为您减少了回文检查的数量(或素数检查的数量,具体取决于您执行检查的顺序。回文检查可能比测试素数更便宜,所以我会先测试)
-
您可能想考虑使用
String[] digits = number.toString().split("") -
检查回文的一种简单方法是将整数转换为字符串,然后使用StringBuilder 类来反转字符串。然后,您可以使用
Integer.parseInt()方法将其转换回 Integer 并检查它们是否相等,或者使用原始 String 和反向版本使用.equals()调用。 -
除 2 和 5 之外,每个质数都必须以 1、3、7 或 9 结尾。您可以通过查看最高有效位来消除很多多位数字。
标签: java for-loop if-statement primes palindrome