10亿以内回文质数算法
希望大牛能指出其中的不足,让小子也学学。
package org.michael;
import java.util.ArrayList;
import java.util.List;
public class Test10Y {
/**
* 10Y内的回文质数
* @param strings
*/
public static void main(String... strings) {
long time = System.currentTimeMillis();
System.out.println("now time:" + time+" start........................");
List list = new ArrayList();
for (int i = 0; i < 1000000000; i++) {
//筛掉偶数的回文数
if(i%2!=0){
boolean flag = runbackNum(i);
if(flag==true){
list.add(i);
// System.out.println("-->"+i);
}
}else{
continue;
}
}
System.out.println("end search the runbackNum.........................................................................");
System.out.println("use time:"+(System.currentTimeMillis()-time)/1000+" s");
int temp = list.size();
List listPrime = new ArrayList();
for(int i=0;i<temp;i++){
if(isPrime((Integer)list.get(i))){
listPrime.add(list.get(i));
}
}
System.out.println(listPrime.size());
System.out.println("***************************************************************************************************");
int lengthPrime = listPrime.size();
for(int i=0;i<lengthPrime;i++){
if(i%20==0){
System.out.println("");
}
System.out.print((Integer)listPrime.get(i)+" ");
}
System.out.println("totle time:" + (System.currentTimeMillis()-time)/1000+" s");
}
/**
* 判断回文数
* @param num
* @return
*/
private static boolean runbackNum(int num){
String str = num + "";
int length = str.length();
boolean flag = true;
if (length > 1) {
for (int j = 0; j < length / 2; j++) {
if (str.charAt(j) == str.charAt(length - j - 1)) {
flag = flag && true;
} else {
flag = flag && false;
break;
}
}
}
return flag;
}
/**
* 判断质数
* @param num
* @return
*/
private static boolean isPrime(int num){
boolean isPrime = true;
for(int j=2;j<Math.sqrt(num)+1;j++){
if(num%j==0){
isPrime=false;
break;
}
}
return isPrime;
}
}
相关推荐
1亿以内的质数(共5761455个数).txt_1亿以内素数的个数
1亿以内的质数(共5761455个数).txt
算法-求一亿以内的回文质数(素数).rar
算法-求一亿以内的回文质数(素数).rar
两分钟内生成40亿以内的质数表的源代码 C语言
本程序可以在目前配置的计算机上在两分钟内生成4G以内数中的质数表,编译环境为Code Blocks,但其中的C语言源文件可以直接用于其它编译环境。
c语言100以内质数
c语言100以内质数,不用多做解释了吧?
1000以内质数的输出
public class Test public static void main String [] args { String str ""; for int i 1; i < 1000; i++ { for a 2; a < int i 2; a++ { if i % a 0 { break; } } if a > int i 2 { str+ String valueOf i +" " } } } System out println "1000以内的质数:"+str ; }">public class Test public static void main String [] args { String str ""; for int i 1; i < 1000; i++ { for a 2; a < int i 2; a++ { if i % a 0 { break; } [更多]


Java SE
