level 13
dwing
楼主
我用C++和java分别写出几乎完全相同的素数计算程序,运行结果令人诧异:C++ (VC6.0)速度优化编译运行:1.234sjava(SDK1.42)编译字节码运行:1.390s难道程序过于简单不能说明问题,还是java确实没有想象中效率那么差?// C++ 程序#include
int searchprime(int num,int *out){ int pn=0; bool *mask=new bool[num+1]; for(int i=2;i<=num;i++) if(!mask[i]) { out[pn++]=i; if(i<32767) for(int j=i*i;j<=num;j+=i) mask[j]=true; } delete []mask; return pn;}void main(){ int *out=new int[664579]; printf("搜索1 ~ 10000000......"); int num=searchprime(10000000,out); printf("找到%d个素数,最后一个素数是%d.\n",num,out[num-1]); delete []out;}// java 程序public class prime{ static int searchprime(int num,int out[]) { int pn=0; boolean mask[]=new boolean[num+1]; for(int i=2;i<=num;i++) if(!mask[i]) { out[pn++]=i; if(i<32767) for(int j=i*i;j<=num;j+=i) mask[j]=true; } return pn; } public static void main(String args[]) { int out[]=new int[664579]; System.out.print("搜索1 ~ 10000000......"); int num=searchprime(10000000,out); System.out.println("找到"+num+"个素数,最后一个素数是"+out[num-1]+"."); }}
2006年06月30日 02点06分
1
int searchprime(int num,int *out){ int pn=0; bool *mask=new bool[num+1]; for(int i=2;i<=num;i++) if(!mask[i]) { out[pn++]=i; if(i<32767) for(int j=i*i;j<=num;j+=i) mask[j]=true; } delete []mask; return pn;}void main(){ int *out=new int[664579]; printf("搜索1 ~ 10000000......"); int num=searchprime(10000000,out); printf("找到%d个素数,最后一个素数是%d.\n",num,out[num-1]); delete []out;}// java 程序public class prime{ static int searchprime(int num,int out[]) { int pn=0; boolean mask[]=new boolean[num+1]; for(int i=2;i<=num;i++) if(!mask[i]) { out[pn++]=i; if(i<32767) for(int j=i*i;j<=num;j+=i) mask[j]=true; } return pn; } public static void main(String args[]) { int out[]=new int[664579]; System.out.print("搜索1 ~ 10000000......"); int num=searchprime(10000000,out); System.out.println("找到"+num+"个素数,最后一个素数是"+out[num-1]+"."); }}