Java黑皮书课后题第6章:**6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开
6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开
- 题目
- 题目描述
- 破题
- 代码
题目
题目描述
6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。
比如,17是一个素数,而71也是一个素数,所以17和71是反素数
编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开
如下所示:
13 17 31 37 71 73 79 97 107 113
149 157 167 179 199 311 337 347 359 389
701 709 733 739 743 751 761 769 907 937
941 953 967 971 983 991 1009 1021 1031 1033
1061 1069 1091 1097 1103 1109 1151 1153 1181 1193
1201 1213 1217 1223 1229 1231 1237 1249 1259 1279
1283 1301 1321 1381 1399 1409 1429 1439 1453 1471
1487 1499 1511 1523 1559 1583 1597 1601 1619 1657
1669 1723 1733 1741 1753 1789 1811 1831 1847 1867
1879 1901 1913 1933 1949 1979 3011 3019 3023 3049
3067
破题
翻译成人话(两个反素数条件):
①一个素数倒过来还是个素数;②两个素数不相等(非回文素数)
代码
public class Test6_27 {public static void main(String[] args) {int count = 0; // 计数变量// 循环遍历for (int i = 10; count <= 100; i++){if (isPrimeNumber(i) && isPrimeNumber(reverse(i)) && (i != reverse(i))){System.out.print(i+" ");count++;if (count % 10 == 0)System.out.println();}}}// 倒置public static int reverse(int i){// 通过将int型数转为String实现倒置String str0 = i +"", str1 = "";int length = str0.length();for (int n = length-1; n >= 0; n--){str1 += str0.charAt(n);}// 再将转换后的String转为int型输出return Integer.parseInt(str1);}// 判断是否是素数public static boolean isPrimeNumber(int i){boolean bool = true;for (int n = 2; n <= i / 2 ;n++){if ( i % n == 0){bool = false;break;}}return bool;}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
