自己刚开始学java,以前也看过一点。记忆最深刻的是算法的不同会使程序的运行时间也大大不同。今天亲身体验了一把。我在书上看到了一种素数很好的算法,然后我又用最一般的思路写了一个。
一般思路:
import java.util.*;
public class TheOther{
public static void main(String[] args)
{
int n=0;
System.out.println("3-200之间的素数:");
System.out.println("当前时间:"+new Date());
for(int i=3;i<200;i+=2){
boolean isPrime=true;
for( int j=2;j<i;j++){
if(i%j==0)isPrime=false;
}
if(isPrime){
System.out.print(" "+i);
n++;
if(n%10==0)System.out.println();
}
}
System.out.println();
System.out.println("完成时间:"+new Date());
}
}
书上的算法:
import java.util.*;
public class PrimeNumber{
public static void main(String[] args)
{
System.out.println("3-200之间的素数:");
System.out.println("当前时间:"+new Date());
int n=0;
for(int i=3;i<200;i+=2){
int k=(int)Math.sqrt(i);
boolean isPrime=true;
for(int j=2;j<=k;j++){
if(i%j==0)isPrime=false;
}
if(isPrime){
System.out.print(" "+i);
n++;
if(n%10==0)System.out.println();
}
}
System.out.println("完成时间:"+new Date());
}
}
结果比较:
D:/java>java TheOther
3-200之间的素数:
当前时间:Web Mar 07 11:17:39 CST 2007
3 5 7 11 13 17 19 23 29 31
37 41 43 47 53 59 61 67 71 73
79 83 89 97 101 103 107 109 113 127
131 137 139 149 151 157 163 167 173
181 191 193 197 199
完成时间:Web Mar 07 11:17:40 CST 2007
书上的算法:
D:/java>java PrimeNumber
3-200之间的素数:
当前时间:Web Mar 07 11:17:52 CST 2007
3 5 7 11 13 17 19 23 29 31
37 41 43 47 53 59 61 67 71 73
79 83 89 97 101 103 107 109 113 127
131 137 139 149 151 157 163 167 173
181 191 193 197 199
完成时间:Web Mar 07 11:17:52 CST 2007