[b]题意分析:[/b]
找出a和b间既对称既是素数的数。
[b]解题思路:[/b]
用递归去解这题。初始数据为单个的0-9和双数的00-99,扔进递归里每次在两边加0-9再递归,直到过长(大于b的长度)。这样每次递归的参数都可能是要的数值,所以递归方法首先要检查是否满足条件,除了要检查是否是素数、是否在[a,b]之间,还要注意有前导零的是不符合条件的。
素数检查代码,一般不需要写到究极,如下的就可用了。
[b]代码实现:[/b]
[url]https://github.com/leonlu/USACOJavaSolution/blob/master/USACOSection1/src/pprime.java[/url]
找出a和b间既对称既是素数的数。
[b]解题思路:[/b]
用递归去解这题。初始数据为单个的0-9和双数的00-99,扔进递归里每次在两边加0-9再递归,直到过长(大于b的长度)。这样每次递归的参数都可能是要的数值,所以递归方法首先要检查是否满足条件,除了要检查是否是素数、是否在[a,b]之间,还要注意有前导零的是不符合条件的。
素数检查代码,一般不需要写到究极,如下的就可用了。
if(tmp % 2 ==0 || tmp %3 == 0) return;
for(int i = 5; i*i <=tmp; i+=2){
if(tmp %i == 0)
return;
}[b]代码实现:[/b]
[url]https://github.com/leonlu/USACOJavaSolution/blob/master/USACOSection1/src/pprime.java[/url]
本文介绍了一种使用递归方法寻找特定区间内既是素数又是回文数的算法。通过逐步构建回文数并检查其素性,确保生成的数同时满足两个条件。递归过程中考虑了前导零的问题,并提供了简洁有效的素数验证代码。
2645

被折叠的 条评论
为什么被折叠?



