红绿灯 @ 2017-10-02 11:44:43
好像没多少人用自己打的素数表来判断素数
明明效率可以高很多的
我截取了自己的一段程序
bool prime(int a,int *ss,int e) // 开始时避免用到未打好表的部分
{
int i=0;
for(i=0;ss[i]<=(int)sqrt((double)a)&&i<=e;i++)
if(a%ss[i]==0)
return false;
return true;
}
int main()
{
int ss[3000]={0},js=0,i=0,j=0,n=0;
ss[0]=2;
for(i=3;i<6662;i++)
if(prime(i,ss,js)==true)
ss[++js]=i;
return 0;
}
每个合数都可以化成若干个素数相乘应该都知道吧。。
那用素数判断就可以省去不必要的判断
我只发了打表的部分,后面的第三个数的判断也可以用这个函数
大佬路过请指正orz